我有一個模板類,其構造函數採用std::vector<T>
。對於除了一個對象之外的每個對象,我都希望它能夠進行操作A.但是對於那一個對象,我希望它可以做一些其他的東西B.具有不同主體的方法的模板顯式實例化
是否有可能僅爲模板類創建一個顯式實例化構造函數?我希望它的描述足夠精確。
問候
更新:我現在已經實現了一個測試用例:
//header
Container(const std::vector<T>& source)
{...}
//source code
template <> Container<int>::Container(const std::vector<int>& source)
{
throw 42;
}
這個例子編譯,但不起作用。我將它導出爲一個dll,並且希望在我嘗試使用泛型參數int創建類的實例時調用它。但是現在它只是調用每個其他對象所使用的標準構造函數。我必須對宣言做出改變嗎?
更新:我成功了!只需將其複製到頭文件。
更新:好的,現在我有另一個問題。我能夠針對「簡單」類型進行專門化,但不能用於模板。我試着這樣說:
template<typename T>
Container<MyClass<T>>::Container(const std::vecror<MyClass<T>>& source)
{...}
我想專門爲它每MyClass的對象,但MyClass的本身應能住上作爲模板。
這是不夠的。你能至少發佈僞代碼,你想做什麼? –
*創建一個明確的實例*?你可能的意思是創建一個明確的**專業化**。你不創建實例化,你可以觸發實例化,既可以是隱式的,也可以是顯式的,但它們不是*創建*。 –