On 2014-12-02 14:29, Andrzej Krzemienski wrote:
2014-12-02 14:08 GMT+01:00 John Maddock
: #include
#include
struct NothrowCtor { NothrowCtor(NothrowCtor&&) BOOST_NOEXCEPT_IF(true) {}; void operator=(NothrowCtor&&) BOOST_NOEXCEPT_IF(false) {}; };
BOOST_STATIC_ASSERT(!::boost::is_nothrow_move_assignable< NothrowCtor>::value);
int main() {}
Update: in the absence of SFINAE expression support, a number of type_traits are terminally broken, and this is one I'm afraid.
If this is unimplementable, then that's fine. What I find confusing is that regression tests for is_nothrow_move_assignable pass on this compiler: http://www.boost.org/development/tests/develop/developer/type_traits.html
The compiler has an __is_nothrow_assignable() built-in, which seems
usable here.
The standard says that is_nothrow_move_assignable<T> is the same as
is_nothrow_assignable