參考樣板 [C++ 語言]
本主題說明如何使用先前宣告的樣板。
template-name < template-arg-list >
備註
template-arg-list 應該是以逗號分隔的清單:
expressiontype-name
所有 expression 引數都必須是常數運算式。 如果沒有與先前產生的樣板完全相符的項目,編譯器會為樣板類別或函式建立新的執行個體 (稱為具現化)。 例如,若要參考成員函式樣板中定義的 MyStack 類別:
MyStack< unsigned long, 5 > stack1;
// Creates a stack of unsigned longs.
MyStack< DWORD, 5 >stack2;
// Uses code created above.
MyStack< char, 6 > stack3;
// Generates new code.
MyStack< MyClass, 6 > stack4;
// Generates stack of MyClass objects.
每一個產生的函式樣板都會建立自己的靜態變數和成員。
所有樣板引數必須可在使用它們的位置上進行存取。
上述語法規則的例外狀況是在 ::、. 或 -> 運算子後面的運算式中識別成員樣板特製化。 在這些運算子之後可以指定關鍵字 template。 Visual C++ 偏離了 template 關鍵字在此內容中一律為選擇項的標準,而在某些情況下該標準會需要使用到它。 除非遵循這些運算子,否則不能在特製化中使用樣板關鍵字。
[ :: | ->| .] template template-name < template-arg-list >
例如,以下指定呼叫成員函式樣板 f<T>(int) 的 int 特製化,其為 X 類別的成員,並在參數 10 中傳遞。
X::template f<int>(10);