template< int a, int b >
struct aa {
template< int x, int y >
struct att { int axx[ a + x ][ b + y ]; };
};
struct b1 : public aa< 1, 2 > {
typedef att< 1, 2 > x;
};
template< int q >
struct b2 : public aa< 12, q > {
typedef att< 1, 2 > x;
};
b1 compiles without a problem (GCC 4.8), but b2 complains
error: 'att' does not name a type
typedef att< 1, 2 > x;
^
why??