std::is_trivially_copyable
![]() | This page has been machine-translated from the English version of the wiki using Google Translate. The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
definiert in Header <type_traits> | ||
template< class T > struct is_trivially_copyable; | (seit C++11) | |
If T
is a trivially copyable type, provides the member constant value
equal true. For any other type, value
is false.
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
Inhaltsverzeichnis |
Inherited from std::integral_constant
Member constants
value [statisch] | true wenn T is a trivially copyable type , false andersOriginal: true if T is a trivially copyable type , false otherwiseThe text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (public static Mitglied konstanten) |
Member functions
operator bool | wandelt das Objekt bool, gibt value Original: converts the object to bool, returns value The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (öffentliche Elementfunktion) |
Member types
Type Original: Type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | Definition |
value_type | bool |
type | std::integral_constant<bool, value> |
[Bearbeiten] Notes
Objects of trivially-copyable types are the only C++ objects that may be safely copied with std::memcpy 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.
[Bearbeiten] Beispiel
#include <iostream> #include <type_traits> struct A { int m; }; struct B { B(const B&) {} }; struct C { virtual void foo(); }; int main() { std::cout << std::boolalpha; std::cout << std::is_trivially_copyable<A>::value << '\n'; std::cout << std::is_trivially_copyable<B>::value << '\n'; std::cout << std::is_trivially_copyable<C>::value << '\n'; }
Output:
true false false