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
[Voted into WP at October 2003 meeting.]
11.4.5 [class.ctor] paragraph 10 states
A copy constructor for a class X is a constructor with afirst parameter of type X & or of type const X &. [Note:see 11.4.5.3 [class.copy.ctor] for more information on copy constructors.]
No mention is made of constructors with first parameters of typesvolatile X & or const volatile X &. This statement seems to bein contradiction with 11.4.5.3 [class.copy.ctor] paragraph 2 which states
A non-template constructor for class X is a copy constructorif its first parameter is of type X &, const X &, volatile X &or const volatile X &, ...
11.4.5.3 [class.copy.ctor] paragraph 5 also mentions the volatileversions of thecopy constructor, and the comparable paragraphs for copy assignment(11.4.5.3 [class.copy.ctor] paragraphs 9 and 10) all allow volatileversions, so it seems that 11.4.5 [class.ctor] is at fault.
Proposed resolution (October 2002):
Change 11.4.5 [class.ctor] paragraph 10 from
Acopy constructor for a classX is a constructor with afirst parameter of typeX& or of typeconst X&.[Note: see 11.4.5.3 [class.copy.ctor] for more information oncopy constructors. ]to (note that the dropping of italics is intentional):
A copy constructor (11.4.5.3 [class.copy.ctor]) is used to copy objectsof class type.