
regression tests in trunk - boost.coroutine but I've commented out the assertion thx, Oliver Am 29.11.2012 01:32 schrieb "Jeffrey Lee Hellrung, Jr." < jeffrey.hellrung@gmail.com>:
On Wed, Nov 28, 2012 at 1:25 PM, Oliver Kowalke <oliver.kowalke@gmail.com
wrote:
2012/11/28 Oliver Kowalke <oliver.kowalke@gmail.com>
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.
I thought I could the problem can be solved like the following code, but it does not compile for gcc (c++0x):
#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES template< typename Fn > void g( BOOST_RV_REF( Fn) ) { typedef typename remove_reference< Fn >::type Y; BOOST_STATIC_ASSERT(( is_same< void, typename result_of< Y( X &) >::type ::value)); } #else ... #endif
g() should be callable with function pointers, copyable and moveable-only functors (signatue void( X&)).
Again - the original code works for gcc, intel, msvc and clang (Linux) and fails for clang on MacOS X.
It would help if you gave a complete, compilable example and the error you're getting.
- Jeff
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost