On 01/09/2013 05:02 PM, Lubos Lunak wrote:
So that other people don't have to search: According to my reading of the standard (mainly 13.3.3.1.1 and 13.3.3.2 [*]), this is because when choosing which conversion for overloaded functions is better, the standard treats all integer conversions[**] the same. I'm a bit confused by "the rank of S1 is better than the rank of S2," in 13.3.3.2, since reading also 4.13 I would say that long and long long have different rank, therefore int->long should be prefered to int->long long, but a test with all GCC, Clang and MSVC shows that having f( long ) and f( long long ) makes f( 0 ) ambiguous :(. Makes me wonder if there is some obscure reason for this or if just the person coming up with this was having a bad day.
The concept of "integer conversion rank" ([conv.rank] aka 4.13, new in C++11, borrowed from C) is completely independent of the concept of "conversion rank" in [over.match.best] (aka 13.3.3).
Stephan _______________________________________________ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice