没有默认构造函数的 CRTC
CRTC without default constructor
我无法确定这是否是我的编译器的问题:
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);
}
error: argument list for class template "B" is missing
此代码似乎可以在 Visual Studio 2012 中正确编译,但它不适用于 icpc 9.1(我必须将其用于此项目)。
代码正确。
icpc 的一个可能解决方法是完全指定基数 class:
C(int i) : B<C>(i) {}
我无法确定这是否是我的编译器的问题:
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);
}
error: argument list for class template "B" is missing
此代码似乎可以在 Visual Studio 2012 中正确编译,但它不适用于 icpc 9.1(我必须将其用于此项目)。
代码正确。
icpc 的一个可能解决方法是完全指定基数 class:
C(int i) : B<C>(i) {}