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