llvm-project/clang-tools-extra/test/clang-tidy
Javier Alvarez 5ea341d7c4 [clang] Fix trivially copyable for copy constructor and copy assignment operator
From [class.copy.ctor]:

```
A non-template constructor for class X is a copy constructor if its first
parameter is of type X&, const X&, volatile X& or const volatile X&, and
either there are no other parameters or else all other parameters have
default arguments (9.3.4.7).

A copy/move constructor for class X is trivial if it is not user-provided and if:
- class X has no virtual functions (11.7.3) and no virtual base classes (11.7.2), and
- the constructor selected to copy/move each direct base class subobject is trivial, and
- or 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.
```

So `T(T&) = default`; should be trivial assuming that the previous
provisions are met.

This works in GCC, but not in Clang at the moment:
https://godbolt.org/z/fTGe71b6P

Reviewed By: royjacobson

Differential Revision: https://reviews.llvm.org/D127593
2022-06-17 10:35:01 +03:00
..
checkers [clang] Fix trivially copyable for copy constructor and copy assignment operator 2022-06-17 10:35:01 +03:00
infrastructure [clang-tidy] Fix (regression introduced by 5da7c04) 2022-05-25 11:30:58 +12:00
CTTestTidyModule.cpp
check_clang_tidy.py check_clang_tidy.py: Update run line to python3 2022-06-03 09:28:09 -04:00