This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 115d. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.
2024-10-26
[Moved to DR at the October, 2015 meeting.]
The introduction of rvalue references in C++11 changed the interpretation of some previously well-formed examples such as the following:
struct Struct { template <typename T> operator T(); }; bool example_1 = new int && false; // #1 bool example_2 = &Struct::operator int && false; // #2
Previously the && was interpreted as an operator, while it is now part of a type-name. However, this change is not mentioned in Annex Clause Annex C [diff].
Proposed resolution (May, 2015):
Add the following as a new subsection in C.6.3 [diff.cpp03.expr]:
7.6.15 [expr.log.or]
Change: && is valid in a type-name
Rationale: Required for new features
Effect on original feature: Valid C++ 2003 code may fail to compile or produce different results in this International Standard, as the following example illustrates:bool b1 = new int && false; // previously false, now ill-formed struct S { operator int(); }; bool b2 = &S::operator int && false; // previously false, now ill-formed