diff options
| author | Javier Alvarez <javier.alvarez@allthingsembedded.net> | 2022-06-17 10:31:14 +0300 |
|---|---|---|
| committer | Roy Jacobson <roi.jacobson1@gmail.com> | 2022-06-17 10:35:01 +0300 |
| commit | 5ea341d7c4f9cc4933adc04ff74d59e26ad2f306 (patch) | |
| tree | 82233b0634c09d039fff93c70aff2ba584ef9746 /lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.h | |
| parent | 880ac5189d638e2b46d63027bc39419262e139c2 (diff) | |
| download | llvm-5ea341d7c4f9cc4933adc04ff74d59e26ad2f306.zip llvm-5ea341d7c4f9cc4933adc04ff74d59e26ad2f306.tar.gz llvm-5ea341d7c4f9cc4933adc04ff74d59e26ad2f306.tar.bz2 | |
[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
Diffstat (limited to 'lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.h')
0 files changed, 0 insertions, 0 deletions
