Created on 2014-10-31.00:00:00 last changed 94 months ago
[Moved to DR at the October, 2015 meeting.]
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
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].
History | |||
---|---|---|---|
Date | User | Action | Args |
2017-02-06 00:00:00 | admin | set | status: dr -> cd4 |
2015-11-10 00:00:00 | admin | set | messages: + msg6085 |
2015-11-10 00:00:00 | admin | set | status: ready -> dr |
2015-05-25 00:00:00 | admin | set | messages: + msg5470 |
2015-05-25 00:00:00 | admin | set | status: drafting -> ready |
2014-10-31 00:00:00 | admin | create |