簡體   English   中英

本地 class 作為模板參數 - 實例化點

[英]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 Svoid fff()之外不可見。 將本地類的實例化點視為模板 arguments 的正確方法是什么?

在這種情況下,實例化的含義是模板實例化

編譯器在 fff 之前創建向量的向量 class 定義,因此如果稍后需要使用 S 進行另一個實例化,則可以重用它。 此時它不會創建向量的實例。

是的,我們無法從外部 fff 訪問 S,但編譯器知道它並創建了一個全局模板,以便可以重用它。

https://en.cppreference.com/w/cpp/language/class_template

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM