This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Problem with use of anonymous types
- From: "Julian Cummings" <cummings at cacr dot caltech dot edu>
- To: <gcc-bugs at gcc dot gnu dot org>
- Date: Fri, 6 May 2005 17:09:34 -0700
- Subject: Problem with use of anonymous types
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?
Thanks, Julian C.
Dr. Julian C. Cummings Office: PB-111
Caltech/CACR, MC 158-79 Phone: 626-395-2543
1200 E. California Blvd. Fax: 626-584-5917
Pasadena, CA 91125