> 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)
{