template <class T>
struct has_trivial_assign : public true_type-or-false_type
{};
Наследники:Если T является (возможно, cv-квалифицированным) типом с тривиальным оператором присвоения, то наследуется отtrue_type, в противном случае наследуется отtrue_type.Фальшивый_тип.
Если тип имеет тривиальное назначение-оператор, то оператор имеет тот же эффект, что и копирование битов одного объекта на другой: вызовы оператору можно безопасно заменить вызовом на<memcpy
>.
Совместимость компилятора:Без некоторой (пока еще не указанной) помощи от компилятора, has_trivial_assign никогда не сообщит, что класс или структура, определяемая пользователем, имеет тривиальный конструктор; это всегда безопасно, если возможно, неоптимально. Для правильной работы с удаленными или частными операторами присваивания компилятор должен также поддерживать C++11<decltype
>. В настоящее время (май 2015 года) компиляторы более поздние, чем Visual C++ 8, GCC-4.3, Greenhills 6.0, Intel-11.0 и Codegear, имеют необходимый компиляторвнутренних элементовдля обеспечения того, чтобы эта черта «просто работала». Вы также можете проверить, доступны ли необходимыевнутренности, проверив, определен ли макрос<BOOST_HAS_TRIVIAL_ASSIGN
>.
C++ Стандартная ссылка:12.8p11.
Заголовок:<#include
<boost/type_traits/has_trivial_assign.hpp>
>или<#include<boost/type_traits.hpp>
>
Примеры:
<has_trivial_assign<int>
>наследуется от<true_type
>.
<has_trivial_assign<char*>::type
>является типом<true_type
>.
<has_trivial_assign<int(*)(long)>::value
>является интегральным постоянным выражением, которое оцениваетистинно.
<has_trivial_assign<MyClass>::value
>— интегральное постоянное выражение, оценивающее доложное.
<has_trivial_assign<T>::value_type
>является типом<bool
>.