forked from OSchip/llvm-project
5ea341d7c4
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 |
||
---|---|---|
.. | ||
analyzer | ||
demo | ||
OpenProjects.html | ||
UniversalDriver.html | ||
builtins.py | ||
c_dr_status.html | ||
c_status.html | ||
carbon-compile.png | ||
clang_video-05-25-2007.html | ||
clang_video-07-25-2007.html | ||
compatibility.html | ||
content.css | ||
cxx_compatibility.html | ||
cxx_dr_status.html | ||
cxx_status.html | ||
diagnostics.html | ||
favicon.ico | ||
feature-compile1.png | ||
feature-compile2.png | ||
feature-memory1.png | ||
features.html | ||
get_involved.html | ||
get_started.html | ||
hacking.html | ||
index.html | ||
libstdc++4.4-clang0x.patch | ||
libstdc++4.6-clang11.patch | ||
libstdc++4.7-clang11.patch | ||
make_cxx_dr_status | ||
menu.css | ||
menu.html.incl | ||
related.html | ||
robots.txt |