Title
Explicit handling of cv-qualification with non-class prvalues
Status
cd3
Section
Clause [7] [expr]
Submitter
Nikolay Ivchenkov

Created on 2011-03-12.00:00:00 last changed 90 months ago

Messages

Date: 2012-10-15.00:00:00

[Moved to DR at the October, 2012 meeting.]

Date: 2011-12-15.00:00:00

Proposed resolution (December, 2011):

  1. Change 7.2.1 [basic.lval] paragraph 4 as follows (supersedes the corresponding change in the resolution of issue 1059):

  2. Class prvalues can have cv-qualified types; non-class prvalues always have cv-unqualified types. Unless otherwise indicated (7.6.1.3 [expr.call]), prvalues shall always have complete types or the void type; in addition to these types, glvalues can also have incomplete types. [Note: class and array prvalues can have cv-qualified types; other prvalues always have cv-unqualified types. See Clause Clause 7 [expr]. —end note]
  3. Add a new paragraph following Clause 7 [expr] paragraph 5:

  4. If an expression initially has the type “reference to T”...

    If a prvalue initially has the type “cv T,” where T is a cv-unqualified non-class, non-array type, the type of the expression is adjusted to T prior to any further analysis.

  5. Change 7.6.1.3 [expr.call] paragraph 3 as follows:

  6. If the postfix-expression designates a destructor (11.4.7 [class.dtor]), the type of the function call expression is void; otherwise, the type of the function call expression is the return type of the statically chosen function (i.e., ignoring the virtual keyword), even if the type of the function actually called is different. This return type shall be an object type, a reference type or the type cv void.
  7. Change 7.6.1.4 [expr.type.conv] paragraph 2 as follows:

  8. ...[Note: if T is a non-class type that is cv-qualified, the cv-qualifiers are ignored discarded when determining the type of the resulting prvalue (7.2.1 [basic.lval] Clause Clause 7 [expr]). —end note]
  9. Change 7.6.3 [expr.cast] paragraph 1 as follows:

  10. ...[Note: if T is a non-class type that is cv-qualified cv-qualified, the cv-qualifiers are ignored discarded when determining the type of the resulting prvalue; see 7.2.1 [basic.lval] Clause Clause 7 [expr]. —end note]
History
Date User Action Args
2014-03-03 00:00:00adminsetstatus: drwp -> cd3
2013-05-03 00:00:00adminsetstatus: dr -> drwp
2012-11-03 00:00:00adminsetmessages: + msg4125
2012-11-03 00:00:00adminsetstatus: ready -> dr
2012-02-27 00:00:00adminsetstatus: tentatively ready -> ready
2012-01-17 00:00:00adminsetstatus: drafting -> tentatively ready
2011-03-12 00:00:00admincreate