Namespaces
Variants
Views
Actions

C++ named requirements: TriviallyCopyable

From cppreference.com
< cpp‎ | named req
 
 
C++ named requirements
 

[edit] Requirements

  • Every copy constructor is trivial or deleted
  • Every move constructor is trivial or deleted
  • Every copy assignment operator is trivial or deleted
  • Every move assignment operator is trivial or deleted
  • at least one copy constructor, move constructor, copy assignment operator, or move assignment operator is non-deleted
  • Trivial non-deleted destructor

This implies that the class has no virtual functions or virtual base classes.

Scalar types and arrays of TriviallyCopyable objects are TriviallyCopyable as well.

[edit] Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DR Applied to Behavior as published Correct behavior
CWG 1734 C++11 C++03 POD with deleted non-trivial assignment was not trivial deleted ctors/operators allowed
CWG 2094 C++14 Volatile scalar types are not trivially copyable (CWG 496) made trivially copyable

[edit] See also

checks if a type is trivially copyable
(class template) [edit]