#include #include struct F { typedef void result_type; void operator()(int&) const {} }; int main (int argc, char* argv[]) { boost::fusion::vector v(1); // Error when decltype-based result_of is used; // trying to instantiate result_of boost::fusion::invoke(F(), v); return 0; }