> > 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.