
2010/12/14 Igor R <boost.lists@gmail.com>
How about adding this overload:
void test( int ) { }
Or if You want to disable implicit conversions to int, add this overload instead: template<typename Type> void test(Type, typename boost::enable_if< boost::is_same<Type, int>
::type* dummy = 0) { }
Well, it was just minimal reproducing sample... In my real code I look-up some type in an mpl::map, then I have to call a function, IF the type was found (i.e. it's not mpl::void_) AND its inner type passes meta-function filter. So the code looks like this:
typedef at<my_map, my_type>::type found_type; process(found_type());
template<typename Type> void process(Type, typename boost::enable_if < and_ < not_<is_same<Type, void_> >, typename apply<filter, typename Type::inner_type>::type
::type* dummy = 0)
{ .... }
But do the solutions I proposed to Your simplified example compile on Your compiler? If they do, what's wrong with applying them to your process() funcions? Kris