没有默认构造函数的CRTC

CRTC without default constructor

本文关键字:CRTC 构造函数 默认      更新时间:2023-10-16

我很难判断这是否是我的编译器的问题

class A
{
public:
    A(int i) {}
};
template <typename T>
class B : public A
{
public:
    B(int i) : A(i) {}
    T test() {return T(10);}
};
class C : public B<C>
{
public:
    C(int i) : B(i) {}
};
int main()
{
    C c(5);
}

错误:类模板"B"的参数列表缺少

这段代码似乎在Visual Studio 2012中编译正确,但它在icpc 9.1(我必须在这个项目中使用它)上不起作用。

代码是正确的。

icpc的一个可能的解决方法是完全指定基类:

C(int i) : B<C>(i) {}