CWG 1261 added the sentence:

> 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.

But the idea has a much longer history. The draft standard in September 1994 mentions in section [basic.lval] that:

> Class rvalues may have qualified types; non-class rvalues always have unqualified types.

In the May 1994 draft standard, this is phrased as:

> Rvalues may be qualified types, however the unqualified type is used unless the rvalue is of class type and a member function is called on the rvalue.