如果我想寫的是有一個可選的類型參數,我可以做以下的類:C++ 11可選模板類型參數?
template<typename T>
struct X
{
T t;
};
template<>
struct X<void>
{
};
int main()
{
X<int> a;
X<void> b;
};
有沒有把它寫,這樣的空隙是不必要的一種方式?即:
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’
你可以做的最好的是'X <> b'。 –
我知道不使用模板的唯一解決方案是製作非模板化的子類。 –
你在第二次嘗試時做了一切正確的事情,除了當用默認參數實例化你的模板時,你仍然需要指定空'<>',即它必須是'X <> b;' – AnT