Created on 2010-08-03.00:00:00 last changed 96 months ago
[Voted into the WP at the November, 2010 meeting.]
Proposed resolution (August, 2010):
Change 126.96.36.199 [temp.deduct.partial] paragraph 9 as follows:
If, for a given type, deduction succeeds in both directions (i.e., the types are identical after the transformations above)
andif the type from the argument template is more cv-qualified than the type from the parameter template (as described above) thattype is considered to be more specialized than the other .
If neither type is more cv-qualified than the other thenneither type is more specialized than the other.
[Editing note: this change transforms the running text at the end of the paragraph into a bulleted list.]
The following example is ambiguous:
template<typename T> int f(T&); template<typename T> int f(T&&); int i; int j = f(i);
Because of the special deduction rule for lvalues passed to rvalue-reference parameters, deduction produces f(int&) for both templates, and they are indistinguishable.
Because f(T&) accepts a strict subset of the things that f(T&&) does, it should be considered more specialized by the partial ordering rules.
|2014-03-03 00:00:00||admin||set||status: fdis -> c++11|
|2011-04-10 00:00:00||admin||set||status: dr -> fdis|
|2010-11-29 00:00:00||admin||set||messages: + msg3206|
|2010-11-29 00:00:00||admin||set||status: ready -> dr|
|2010-08-23 00:00:00||admin||set||messages: + msg2815|