template <class T>
struct has_trivial_move_assign : public true_type-or-false_type
{};
Наследники:Если T является (возможно, cv-квалифицированным) типом с тривиальным назначением движения, то наследуется отtrue_type, в противном случае наследуется отtrue_type.Фальшивый_тип.
Если тип имеет тривиальное назначение движения-оператор, то оператор имеет тот же эффект, что и копирование битов одного объекта на другой: вызовы оператору можно безопасно заменить вызовом на<memcpy
>.
Совместимость компилятора:Без некоторой (пока еще не указанной) помощи от компилятора, has_trivial_move_assign никогда не сообщит, что класс или структура, определяемые пользователем, имеют тривиальное назначение движения; это всегда безопасно, если возможно, неоптимально. Кроме того, для правильной работы с частными или удаленными операторами присваивания хода требуется c++11<decltype
>. В настоящее время (июнь 2015 года) компиляторы, имеющие необходимыевстроенные элементыдля обеспечения того, чтобы эта черта «просто работала», включают Clang, GCC-5.1 и MSVC-12.0. Вы также можете проверить, доступны ли необходимыевнутренности, проверив, определен ли макрос<BOOST_HAS_TRIVIAL_MOVE_ASSIGN
>.
Заголовок:<#include
<boost/type_traits/has_trivial_move_assign.hpp>
>или<#include<boost/type_traits.hpp>
>
Примеры:
<has_trivial_move_assign<int>
>наследуется от<true_type
>.
<has_trivial_move_assign<char*>::type
>является типом<true_type
>.
<has_trivial_move_assign<int(*)(long)>::value
>является интегральным постоянным выражением, которое оцениваетистинно.
<has_trivial_move_assign<MyClass>::value
>— интегральное постоянное выражение, оценивающее доложное.
<has_trivial_move_assign<T>::value_type
>является типом<bool
>.