[英]Local class as Template Argument - Point of Instantiation
我正試圖圍繞 TC++PL 第 4 版 (p.751) 中的示例展開思考。
void fff()
{
struct S { int a,b; };
vector<S> vs;
// ...
}
從討論中可以看出, vector<S>
的實例化點就在void fff()
的定義之前。 但是, struct S
在void fff()
之外不可見。 將本地類的實例化點視為模板 arguments 的正確方法是什么?
在這種情況下,實例化的含義是模板實例化。
編譯器在 fff 之前創建向量的向量 class 定義,因此如果稍后需要使用 S 進行另一個實例化,則可以重用它。 此時它不會創建向量的實例。
是的,我們無法從外部 fff 訪問 S,但編譯器知道它並創建了一個全局模板,以便可以重用它。
看
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.