]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | [/ |
2 | Copyright 2007 John Maddock. | |
3 | Copyright 2013 Antony Polukhin. | |
4 | Distributed under the Boost Software License, Version 1.0. | |
5 | (See accompanying file LICENSE_1_0.txt or copy at | |
6 | http://www.boost.org/LICENSE_1_0.txt). | |
7 | ] | |
8 | ||
9 | [section:is_nothrow_move_assignable is_nothrow_move_assignable] | |
10 | ||
11 | template <class T> | |
12 | struct is_nothrow_move_assignable : public __tof {}; | |
13 | ||
14 | __inherit If `T` is a (possibly cv-qualified) type with a non-throwing move assignment-operator | |
15 | or a type without move assignment-operator but with non-throwing assignment-operator, | |
16 | then inherits from __true_type, otherwise inherits from __false_type. Type `T` | |
17 | must be a complete type. | |
18 | ||
19 | In other words, inherits from __true_type only if expression `variable1 = std::move(variable2)` | |
20 | won't throw (`variable1` and `variable2` are variables of type `T`). | |
21 | ||
22 | __compat If the compiler does not support partial-specialization of class | |
23 | templates, then this template can not be used with function types. | |
24 | ||
25 | Without some (C++11 noexcept shall work correctly) help from the compiler, | |
26 | `is_nothrow_move_assignable` will never report that a class or struct has a | |
27 | non-throwing assignment-operator; this is always safe, if possibly sub-optimal. | |
28 | Currently (June 2015) MSVC-12.0, Clang and GCC 4.7 have the necessary compiler support to ensure that this | |
29 | trait "just works". | |
30 | ||
31 | __header ` #include <boost/type_traits/is_nothrow_move_assignable.hpp>` or ` #include <boost/type_traits.hpp>` | |
32 | ||
33 | [endsect] | |
34 |