This is the mail archive of the gcc-bugs@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 use of anonymous types



On May 6, 2005, at 8:09 PM, Julian Cummings wrote:


People are reporting trouble compiling blitz with gcc-4.0.0, and the
compiler errors are resulting from the use of unnamed enums. A simple code
illustrates the problem:


struct nullType {};
template <typename T> inline T operator+(const T& a, nullType) { return a;
}
enum named { namedA = 1, namedB = 2 };
enum { unnamedA = 2, unnamedB = 4 };
struct bar {
enum { namedC = namedA + namedB,
unnamedC = unnamedA + unnamedB };
};
int main() {
}


The gcc compiler complains about trying to add unnamedA and unnamedB.
Apparently it gets confused by the presence of the operator+ overload for
the empty struct nullType. I don't see why the compiler would think that
the anonymous enumerators unnamedA or unnamedB would match with type
nullType. Enumerators are supposed to default to integers when used in
arithmetic operations such as operator+. Everything compiles fine when the
operator+ overload is not present. The code compiles as is under gcc-3.4.
What gives?

This is a bug in your code. See PR 19404 and PR 20589.


-- Pinski


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