如果我想编写一个具有可选类型参数的类,我可以执行以下操作:
template<typename T>
struct X
{
T t;
};
template<>
struct X<void>
{
};
int main()
{
X<int> a;
X<void> b;
};
有没有办法写出来,这样 void 是不必要的?IE:
int main()
{
X<int> a;
X b;
};
我试过这个:
template<typename T = void>
struct X
{
T t;
};
template<>
struct X<void>
{
};
int main()
{
X<int> a;
X b;
};
但我得到:
test.cpp: In function ‘int main()’:
test.cpp:16:4: error: missing template arguments before ‘b’
test.cpp:16:4: error: expected ‘;’ before ‘b’