// t0578.cc // do AbstractEnumerators need to know their value expressions? // GCC and ICC both reject all six out-of-line member defns template struct A { enum { x = n, y = n+1, z /*implicitly y+1*/ }; int f(int (*a)[n]); int f(int (*a)[n+1]); int f(int (*a)[n+2]); int g(int (*a)[x]); int g(int (*a)[y]); int g(int (*a)[z]); }; template int A::f(int (*a)[x]) { return 1; } template int A::f(int (*a)[y]) { return 2; } template int A::f(int (*a)[z]) { return 2; } template int A::g(int (*a)[n]) { return 1; } template int A::g(int (*a)[n+1]) { return 2; } template int A::g(int (*a)[n+2]) { return 2; }