4
我試圖定義一個構造函數的類定義之外的明確專門的類模板,像這樣的:淘汰類的構造函數定義了一個專門的類模板
template <typename T>
struct x;
template <>
struct x<int> {
inline x();
/* This would have compiled:
x() {
}
*/
};
template <> // Error
x<int>::x() {
}
但它似乎是一個錯誤。科莫說:error: "x<int>::x()" is not an entity that can be explicitly specialized
,即使完整的課程是專業。
這裏有什麼問題?
我從來沒有見過這個。這裏知道答案會很有趣。一般來說,我保持我的模板內聯編碼,以減少所有不必要的混亂。 – 2010-10-14 17:42:25
使用g ++,我得到錯誤'template-id'x <>'for'x :: x()'與任何模板聲明不匹配。然而,如果我改變它,所以它不是一個構造函數,我仍然得到一個等效的錯誤:'void x :: pants()'的'template-id'褲子'>'不匹配任何模板聲明。 –
2010-10-14 17:54:20
@Josh D:當然可以。實際上,它是唯一的選擇,例如,沒有有意義的泛型定義的char_traits <>類型的類 - 未定義專門化的類參數將生成編譯錯誤。 – 2010-10-14 17:55:35