std::is_trivially_copyable
Template:cpp/types/sidebar Template:ddcl list begin <tr class="t-dsc-header">
<td><type_traits>
<td></td> <td></td> </tr> <tr class="t-dcl ">
<td >struct is_trivially_copyable;
<td class="t-dcl-nopad"> </td> <td > (since C++11) </td> </tr> Template:ddcl list end
If T
is a trivially copyable type, provides the member constant value
equal Template:cpp. For any other type, value
is Template:cpp.
The only trivially copyable types are scalar types, trivially copyable classes, and arrays of such types/classes (possibly cv-qualified).
A trivially copyable class is a class that
1. Has no non-trivial copy constructors (this also requires no virtual functions or virtual bases)
2. Has no non-trivial move constructors
3. Has no non-trivial copy assignment operators
4. Has no non-trivial move assignment operators
5. Has a trivial destructor
Contents |
Inherited from std::integral_constant
Member constants
value [static] |
true if T is a trivially copyable type , false otherwise (public static member constant) |
Member functions
operator bool |
converts the object to bool, returns value (public member function) |
operator() (C++14) |
returns value (public member function) |
Member types
Type | Definition |
value_type
|
bool |
type
|
std::integral_constant<bool, value> |
Notes
Objects of trivially-copyable types are the only C++ objects that may be safely copied with Template:cpp or serialized to/from binary files with std::ofstream::write()/std::ifstream::read(). In general, a trivially copyable type is any type for which the underlying bytes can be copied to an array of char or unsigned char and into a new object of the same type, and the resulting object would have the same value as the original.