我有下一个使用 gcc 编译的示例代码(4.7.2 使用 -std=c++11):
template<class C>
struct template_test
{
C testing() const
{
return C();
}
};
class A;
struct test : public template_test<A> // (1)
{};
struct A
{};
int main()
{
test t;
}
在点 (1) 处,函数template_test<A>::testing()
被实例化,并使用 的函数A
,特别是其默认构造函数。因此,test
包含这个实例化的函数作为函数成员。但是,此时A
是不完整类型,C++ 禁止使用不完整类型的成员。
这是positive
gcc 的错误还是有其他解释?