Created on 2009-08-19.00:00:00 last changed 186 months ago
Consider the following example:
struct NullClass { template<typename T> operator T () { return 0 ; } }; int main() { NullClass n; n==5; // #1 return 0; }
The comparison at #1 is, according to the current Standard, ambiguous. According to 12.5 [over.built] paragraph 12, the candidates for operator==(L, R) include functions “for every pair of promoted arithmetic types,” so L could be either int or long, and the conversion operator template will provide an exact match for either.
Some implementations unambiguously choose the int candidate. Perhaps the overload resolution rules could be tweaked to prefer candidates in which L and R are the same type?
(See also issue 545.)
History | |||
---|---|---|---|
Date | User | Action | Args |
2009-08-19 00:00:00 | admin | create |