Topic: Purported ambiguity of operator==(unsigned short, int)


Author: 3130@mail.com
Date: 10 May 2006 15:40:01 GMT
Raw View
Which section of the standard should I refer to to resolve the
following ambiguity?

For the code fragment below, I get conflicting results on different
compilers I have
access to. One compiler doesn't complain and the other does.

Compilation requires that the compiler determine that application of
the available
conversion operator is sufficient to allow a built-in operator==(int,
int) to be applied.

class C
{
public:
     C(unsigned short);
     friend bool operator==(unsigned short, const C&);

};

class X
{
public:
     operator unsigned short() const;

};

bool fail1(const X& x)
{
     return x == 0x1234;

}

bool fail2(const X& x)
{
     return x == (unsigned short) 0x1234;

}

---
[ comp.std.c++ is moderated.  To submit articles, try just posting with ]
[ your news-reader.  If that fails, use mailto:std-c++@ncar.ucar.edu    ]
[              --- Please see the FAQ before posting. ---               ]
[ FAQ: http://www.comeaucomputing.com/csc/faq.html                      ]