
AMDG Eric wrote:
This code:
BOOST_MPL_HAS_XXX_TRAIT_DEF(normal); <snip>
if I understand correctly, this code is suppose to do call a different "getNormal" method if the method "normal" exists (or not) in the template parameter class.
Basically mimicking the infamous "__if_exists" macro on the Microsoft c++ compiler.... right?
but, has_normal<VT> always return false (visual studio 2008) so we don't get the right expected behavior!
has_normal checks for a nested *type* called normal, not for a member function. #include <boost/mpl/has_xxx.hpp> #include <boost/mpl/assert.hpp> BOOST_MPL_HAS_XXX_TRAIT_DEF(normal); struct test1 {}; struct test2 { typedef void normal; }; struct test3 { int normal(); }; int main() { BOOST_MPL_ASSERT_NOT((has_normal<test1>)); BOOST_MPL_ASSERT((has_normal<test2>)); BOOST_MPL_ASSERT_NOT((has_normal<test3>)); } In Christ, Steven Watanabe