For a class of type T, the following members can be generated by the compiler, depending on the class:
- default constructor:
T::T() - copy constructor:
T::T(const T&) - move constructor:
T::T(T&&) - copy assignment operator:
T& T::operator=(const T&) - move assignment operator:
T& T::operator=(T&&)
In C++14, and in C++17, what are the rules that lead to the generation of constexpr versions of these functions by the compiler?