Boost logo

Boost :

Subject: Re: [boost] Help test MSVC 14 CTP compiler
From: Bo Persson (bop_at_[hidden])
Date: 2014-12-02 11:14:10


On 2014-12-02 14:29, Andrzej Krzemienski wrote:
> 2014-12-02 14:08 GMT+01:00 John Maddock <boost.regex_at_[hidden]>:
>
>> #include <boost/static_assert.hpp>
>>> #include <boost/type_traits/is_nothrow_move_assignable.hpp>
>>>
>>> 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<T&, T&&>.

Bo Persson


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk