
"David Abrahams" <dave@boost-consulting.com> wrote in message news:upt4pvvfy.fsf@boost-consulting.com...
"Jonathan Turkanis" <technews@kangaroologic.com> writes:
"Jonathan Turkanis" <technews@kangaroologic.com> wrote in message news:ci5qf6$ioc$1@sea.gmane.org...
The library is here: http://tinyurl.com/43ddj.
That's the link for the docs. The download page is here: http://tinyurl.com/4axzk.
Surely this functionality already exists somewhere in the MPL? Yup, there's is_lambda_expression<E>::value (which is true iff is_placeholder_expression<E>::value | is_metafunction_class<E>::value).
I wrote this last winter. is_lambda_expression seems to be a recent (very welcome) addition. When I searched throught the mpl source for is_lambda_expression, is_metafunction_class, is_metafunction, etc. all I found was the nested type is_le. I tried to define is_lambda_expression like this template<typename T> struct is_lambda_expression { typedef typename lambda<T>::is_le type; static const bool value = type::value; }; and it almost worked, but failed for some metafunctions, including always<int>. Anyway, I'm glad to see it's there now. Perhaps the macro BOOST_HAS_TEMPLATE_XXX_TRAIT_NAMED_DEF would still be useful? Jonathan