簡體   English   中英

模板類成員函數instatitation

[英]Template class member function instatitation

標准N4296::14.7.1/1說:

類模板特化的隱式實例化會導致聲明的隱式實例化,而不會導致類成員函數,成員類,作用域成員枚舉,靜態數據成員和成員模板的定義,缺省參數或異常規范之間的實例化。

讓我們考慮以下代碼:

template <class T>
class A
{
    void foo(){ }
};

A<int> a; //Implicit instantiation here

int main(){ }

因此,當模板被隱式實例化時,它實際上在沒有任何成員函數的類中實例化,因為我們沒有使用它。 這是真的嗎?

該類具有已聲明但尚未定義的成員函數。

在非模板類中也允許這樣做; 如果使用(非虛擬)成員函數,則只需要一個定義。

因此,在模板中,函數聲明在實例化時必須是有效的,但函數體還不需要工作。

暫無
暫無

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

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