Предварительное объявление класса, используемого в функции шаблона, не компилируется clang++

Вот такой код:

class A;

template <class T>
void fun() {
   A a;
}

class A { 
public: 
   A() {  } 
};

int main() { 
   fun<int>(); 
   return 0;
}

g++ 4.5 и g++ 4.7 компилируются без ошибок. Но clang++ 3.2 (trunk) выдает эту ошибку:

main.cpp:5:6: error: variable has incomplete type 'A'
   A a;
     ^
main.cpp:1:7: note: forward declaration of 'A'
class A;
      ^

Какой компилятор соответствует стандарту C++?

12
задан scdmb 12 June 2012 в 09:28
поделиться