std::decay
Section: 21.3.8.7 [meta.trans.other] Status: C++11 Submitter: Jason Merrill Opened: 2009-08-07 Last modified: 2016-01-28
Priority: Not Prioritized
View all other issues in [meta.trans.other].
View all issues with C++11 status.
Discussion:
I notice that std::decay
is specified to strip the cv-quals from
anything but an array or pointer. This seems incorrect for values of
class type, since class rvalues can have cv-qualified type (7.2.1 [basic.lval]/9).
[ 2009-08-09 Howard adds: ]
See the thread starting with c++std-lib-24568 for further discussion. And here is a convenience link to the original proposal. Also see the closely related issue 705.
[ 2010 Pittsburgh: Moved to Ready. ]
Proposed resolution:
Add a note to decay
in 21.3.8.7 [meta.trans.other]:
[Note: This behavior is similar to the lvalue-to-rvalue (4.1), array-to-pointer (4.2), and function-to-pointer (4.3) conversions applied when an lvalue expression is used as an rvalue, but also strips cv-qualifiers from class types in order to more closely model by-value argument passing. — end note]