This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 119a. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.
2025-12-20
[Moved to DR at the November, 2016 meeting.]
The resolution ofissue 496included the addition of 11.4.5.3 [class.copy.ctor] paragraph 25.2, making a class's copy/move constructornon-trivial if it has a non-static data member ofvolatile-qualified type. This change breaks the IA-64 ABI,so it has been requested that CWG reconsider this aspect of theresolution.
On a related note, the resolution ofissue 496 also changed6.9 [basic.types] paragraph 9, which makesvolatile-qualified scalar types “trivial” butnot “trivially copyable.” It is not clear whythere is a distinction made here; the only actual use of“trivial type” in the Standard appears to be inthe description ofqsort, which should probably use“trivially copyable.” (See alsoissue 1746.)
Notes from the February, 2016 meeting:
CWG agreed with the suggested direction for the changes in11.4.5.3 [class.copy.ctor]; the use of “trivial” willbe dealt with separately and not as part of the resolution of thisissue.
Proposed resolution (June, 2016):
Change 6.9 [basic.types] paragraph 9 as follows:
...called POD types. Cv-unqualified scalar types, trivially copyable classtypes (Clause 11 [class]), arrays of such types, andnon-volatile const-qualifiedcv-qualified versions ofthese types (6.9.5 [basic.type.qualifier]) are collectivelycalledtrivially copyable types. Scalar types...
Delete bullet 12.2 of 11.4.5.3 [class.copy.ctor]:
A copy/move constructor for classX is trivial if it is notuser-provided, its parameter-type-list is equivalent to theparameter-type-list of an implicit declaration, and if
...
classX has no non-static data members of volatile-qualified type, and...
Delete bullet 25.2 of 11.4.5.3 [class.copy.ctor]:
A copy/move assignment operator for classX is trivial if it isnot user-provided, its parameter-type-list is equivalent to theparameter-type-list of an implicit declaration, and if
...
classX has no non-static data members ofvolatile-qualified type, and