::boost::is_compound<T>::value |
Evaluates to true only if T is
a compound type. That is an array, function, pointer, reference,
enumerator, union, class or member function
type. |
3.9.2 |
|
Based on this, I thought I could implement is_member_function_pointer with is_member_pointer && is_compound, but as it turns out is_compound is implemented thus:
template <typename T> struct is_compound
{
BOOST_STATIC_CONSTANT(bool, value =
(::boost::type_traits::ice_or<
::boost::is_array<T>::value,
::boost::is_pointer<T>::value,
::boost::is_reference<T>::value,
::boost::is_class<T>::value,
::boost::is_union<T>::value,
::boost::is_enum<T>::value,
::boost::is_member_pointer<T>::value
>::value));
};
Also, based on this thread: http://groups.yahoo.com/group/boost/message/21331, it seems to me that we ought to clearly distinguish member functions from member function pointers.
===================================================
David Abrahams, C++ library designer for hire
resume: http://users.rcn.com/abrahams/resume.html