Problem with use of anonymous types
Andrew Pinski
pinskia@physics.uc.edu
Sat May 7 00:09:00 GMT 2005
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
More information about the Gcc-bugs
mailing list