
28 Nov
2012
28 Nov
'12
8:46 p.m.
You are asking result_of to compute the result of calling a unary function that takes an X& with zero arguments. That's nonsensical. If you intend to call it with an X&, then ask it what the result is when called with an X&:
boost::result_of< Fn(X&) >::type
This should correctly report void regardless of whether result_of uses decltype or the TR1 result_of protocol.
OK, I got it. It's strange that clang 3.2 (c++11), gcc, ontel and msvc compile the code without errors on Loinux and Windows.