Re: Does GCC assign any type to enums that can be specified in an assignment operator?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





> > Does GCC assign any type to enums that can be specified in an 
> assignment
> operator?
> 
> I'm not sure I understand the question.  I assume a C++ context, and not a
> C
> context (which has different rules regarding enum types).
> 
> What is the use case scenario?  Do you mean something like this...
> 
> - - - - -
> enum Foo { Uno, Dos, Tres };
> 
> class Bar
> {
>   int m;
> public:
>   Bar() : m(Uno) { }
>   Bar(Foo foo) : m(foo) { }
>   Bar(Bar const& bar) : m(bar.m) { }
>   Bar& operator = (Foo foo) { m = foo; return *this; }
>   operator Foo() const { return Foo(m); }
> };
> - - - - -
> 
> --Eljay
> 

I'm sorry, perhaps to be more specific, I was referring more so (if not
entirely) to anonymous enums (never really ever use tagged enums) 

Since asked, basicly imagine this:

 enum{ Uno, Dos, Tres }; //anonymous
 
 class Bar
 {
   int m;
 public:
   Bar& operator = (unsigned int foo) { m = foo; return *this; }
   Bar& operator = (signed int foo) { m = foo; return *this; }
 };

You could substitute pretty much any number integral assignment operators.

Now say:

Bar bar; bar = Uno; //error: assignment operators are ambiguous

Whereas, with the Windows compiler (msvc for short) Uno will be treated as
an int (signed -- perhaps more specifically a const long int if the option
exists) ...basicly msvc resolves this ambiguity by choosing the closest
match on a well defined top down prioritized basis, whereas GCC just gives
up and declares ambiguity. 

Its mostly just annoying... turns out though I already had an alternative
assignment for all of the cases I've ran into so far during the porting
process.

So I hope that clears everything up. Appreciate your curiosity.

sincerely,

michael

PS: I will go ahead and repost this in the Nabble forums if it doesn't pop
up (my apologies if it is multiposted to the mailing lists etc)



-- 
View this message in context: http://www.nabble.com/Does-GCC-assign-any-type-to-enums-that-can-be-specified-in-an-assignment-operator--tf3967638.html#a11269077
Sent from the gcc - Help mailing list archive at Nabble.com.


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux