This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Problem with ambiguous overloaded operators


On 7 June 2012 18:09, Arthur Schwarz wrote:
>
>
> I am using g++ 4.5.3 as my compiler and NetBeans 7.1.2 as my IDE.
>
> What I wnat to do is to overload operators using all selected types. ?What I get
> are error messages indicating that the usage is ambiquous. I ?understaad that
> the runtime usage may be ambiguous using literal values.

Literals are not run-time values, they are compile-time values, a call
using a literal must be resolved at compile-time like any other call.

>?I don't understand why
> a typed variable would cause ambiguity. And I ?would like to know how to code
> around the issue. The issue (to me) is ?that char can be widened to long, and
> unsigned char can be widened to ?unsigned long, but how do I take care of issues
> between unsigned (char ?or long) and signed (char or long) since their ranges
> are different.

A long can be converted to any of the types you have overloaded the
function for, there is no "hierarchy" of types that a long would
prefer to convert to.

You should overload the function for all types you need it for or
explicitly convert the argument to one of the types you have
overloaded the function for.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]