這裏是我的代碼:實例化模板類<erroneous-expression>?
template<typename T, template<typename = T,typename =std::allocator<typename = T> > class Container= std::vector>
class stack
{
public:
Container<T> cont;
stack()
{
}
};
如果我更換代碼的第一行下面的代碼,然後它的工作原理:
template<typename T, template<typename elem= T,typename =std::allocator<elem> > class Container= std::vector>
,但我要問的是我讀過的時候你不不使用模板類型參數,那麼你可以這樣寫:<typename=default_type>
或<typename>
。上述代碼中的T
也可以在模板模板參數Container
的參數列表中看到(即,在整個參數化子句中可以看到類型參數T
)。總而言之,我認爲它應該起作用。 但是它沒有,並給出了錯誤:
error: expression '<erroneous-expression> = <erroneous-expression>' is not a constant-expression
error: template argument 1 and 2 are invalid
因此,誰能解釋爲什麼我看到這些錯誤,什麼是錯誤的表達?
「錯誤表達」可能只是你的編譯器被困惑。 –