void has_trivial_move_constructor() {
// n3376 12.8 [class.copy]/12
- // A copy/move constructor for class X is trivial if it is not
- // user-provided, its declared parameter type is the same as
+ // A copy/move constructor for class X is trivial if it is not
+ // user-provided, its declared parameter type is the same as
// if it had been implicitly declared, and if
- // \97 class X has no virtual functions (10.3) and no virtual
+ // - class X has no virtual functions (10.3) and no virtual
// base classes (10.1), and
- // \97 the constructor selected to copy/move each direct base
+ // - the constructor selected to copy/move each direct base
// class subobject is trivial, and
- // \97 for each non-static data member of X that is of class
+ // - for each non-static data member of X that is of class
// type (or array thereof), the constructor selected
// to copy/move that member is trivial;
// otherwise the copy/move constructor is non-trivial.
void has_trivial_move_assign() {
// n3376 12.8 [class.copy]/25
- // A copy/move assignment operator for class X is trivial if it
- // is not user-provided, its declared parameter type is the same
+ // A copy/move assignment operator for class X is trivial if it
+ // is not user-provided, its declared parameter type is the same
// as if it had been implicitly declared, and if:
- // \97 class X has no virtual functions (10.3) and no virtual base
+ // - class X has no virtual functions (10.3) and no virtual base
// classes (10.1), and
- // \97 the assignment operator selected to copy/move each direct
+ // - the assignment operator selected to copy/move each direct
// base class subobject is trivial, and
- // \97 for each non-static data member of X that is of class type
+ // - for each non-static data member of X that is of class type
// (or array thereof), the assignment operator
// selected to copy/move that member is trivial;
{ int arr[T(__has_trivial_move_assign(Int))]; }