Сначала код:
template <class T>
class A {
public:
void a() {
T t;
t.t();
};
};
class X {
public:
void t() {
cout << "X" << endl;
};
};
typedef A<X> B;
class Y {
public:
void t() {
cout << "Y" << endl;
};
};
int main() {
B<Y> b1;
b1.a();
B b2;
b2.a();
return 0;
};
По типу такого gcc-3.3.3 компилит на ура
. На самом деле, я не должен был делать B<Y>, а просто должен был указывать B. Скомпилив на msvc8 получил, еррор и увидел эту ситуацию. Теперь вопрос: что это у gcc — фича или бага? И если фича — то по стандарту? Получается сабж?