id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 10443,[fusion] Compile errors with boost::fusion::invoke and boost::result_of using decltype,James Whitworth ,Joel de Guzman,"The following example fails to compile with c++11 compliant compilers. {{{#!c++ #include #include #include void Function( int & output ) { output = 12; } int main( int, char ** ) { boost::fusion::vector1< int > parameters; boost::function< void( int & ) > function = &Function; boost::fusion::invoke( function, parameters ); return 0; } }}} I think the problem is due to the implementation {{{boost::result}}} using decltype and {{{boost::fusion::invoke}}} expecting the old TR1 type behaviour. The example compiles fine when {{{BOOST_RESULT_OF_USE_TR1_WITH_DECLTYPE_FALLBACK}}} is defined. Compiling the above with '''clang++ -std=c++11 main.cpp''' generates the following output: {{{ In file included from main.cpp:4: In file included from /usr/local/include/boost/fusion/functional.hpp:13: In file included from /usr/local/include/boost/fusion/functional/invocation.hpp:13: In file included from /usr/local/include/boost/fusion/functional/invocation/invoke.hpp:96: In file included from /usr/local/include/boost/preprocessor/iteration/detail/iter/forward1.hpp:52: /usr/local/include/boost/fusion/functional/invocation/invoke.hpp:205:55: error: no type named 'type' in 'boost::result_of (const int &)>' Function(BOOST_PP_ENUM(N,M,~)) >::type result_type; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~ /usr/local/include/boost/fusion/functional/invocation/invoke.hpp:161:38: note: in instantiation of template class 'boost::fusion::detail::invoke_impl, const boost::fusion::vector1, 1, false, true>' requested here typedef typename detail::invoke_impl< ^ /usr/local/include/boost/fusion/functional/invocation/invoke.hpp:179:32: note: in instantiation of template class 'boost::fusion::result_of::invoke, const boost::fusion::vector1 >' requested here inline typename result_of::invoke::type ^ /usr/local/include/boost/fusion/functional/invocation/invoke.hpp:180:5: note: while substituting deduced template arguments into function template 'invoke' [with Function = boost::function, Sequence = boost::fusion::vector1] invoke(Function f, Sequence const & s) ^ 1 error generated. }}} ",Bugs,closed,To Be Determined,fusion,Boost 1.56.0,Problem,fixed,invoke result_of delctype c++11,jaredgrubb@… flast@…