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

Reply via email to