有这个代码:
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++ 标准,哪个编译器是正确的?