
Hello, clang (c++11 support) fails on code like:
BOOST_STATIC_ASSERT(( is_same< void, typename result_of< Fn() >::type >::value));
with error:
no type named 'type' in 'boost::result_of<void (&())(X &)>' is_same< void, typename result_of< Fn() >::type >::value)); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~**~~
Does Fn == void (&)(X&) or void (X&) ? I.e., is it a unary function type?
it's called inside a templated function: template< typename Fn > void g(BOOST_RV_RV( Fn) fn){ BOOST_STATIC_ASSERT(...) ....} in the example it was instantiated with a function pointer void(*)(X&)
There might've been a recent change only for Clang to allow result_of to be better usable with SFINAE: result_of< F ( Args... ) > doesn't have a nested type typedef if F ( Args... ) is ill-formed (which appears to be the case here).
it's strange because clang(version unknown) fails only on MacOSX - on Linux clang (3.2) compiles the same code regards, Oliver
../boost/static_assert.hpp:48:**50: note: expanded from macro
'BOOST_STATIC_ASSERT' # define BOOST_STATIC_ASSERT( B ) static_assert(B, #B) ^
Do you know why it fails? (other compilers like gcc, intel, msvc compile the code)
- Jeff
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost