template <class T, class U>
struct is_assignable : public true_type-or-false_type {};
Наследники:Если<std::declval<T>()
=std::declval<U>()>наследуется отtrue_type, то от __flase_type. Тип<T>должно быть полным.
Обратите внимание, что эту черту несколько сложно использовать правильно: например:
is_assignable<int, int>::value
<false>, поскольку<std::declval<int>()>являетсяxvalue, которое не может быть присвоено!
Если вы намерены проверить для копирования назначения от какого-либо типа U, то используйте:
is_assignable<T&, const U&>::value
Если вы намерены проверить назначение движения, то используйте:
is_assignable<T&, U&&>::value
Или просто:
is_assignable<T&, U>::value
Совместимость компиляторов:Для полной поддержки требуются функции C++11<decltype>и SFINAE-выражения.
Заголовок:<#include
<boost/type_traits/is_assignable.hpp>>или<#include<boost/type_traits.hpp>>