
Hi I'm new to the boost::mpl library, and have some "beginners-problems" template < typename F > struct A { typedef boost::function_types::parameter_types<F> P; typedef typename boost::function_types::result_type<F>::type R; typedef typename boost::mpl::if_< boost::is_same< R, void >, boost::function< void ( void ) > , boost::function< void ( R ) > >::type TTT; A() { } }; int main(int argc, const char *argv[]) { A<int(int, float)> ok; // working A<void(int, float)> compile_error; // non-working return 0; } xxx.cxx: In instantiation of ‘A<void(int, float)>’: xxx.cxx:108:25: instantiated from here xxx.cxx:100:77: error: invalid parameter type ‘boost::mpl::aux::wrapped_type<boost::mpl::aux::type_wrapper<void>
::type’ xxx.cxx:100:77: error: in declaration ‘A<F>::TTT’
What is the problem here, and how can I solve it. To my understanding only the selected part of mpl::if_ should be evaluated by the compiler.... Regards Allan W. Nielsen