Defined in header <type_traits> template< class T, class U >
struct is_assignable; (1) (since C++11) template< class T, class U >
struct is_trivially_assignable; (2) (since C++11) template< class T, class U >
struct is_nothrow_assignable; (3) (since C++11)
1) If the expression std::declval<T>() = std::declval<U>() is well-formed in unevaluated context, provides the member constant value equal true. Otherwise, value is false. Access