這只是在another question的背景下出現的。「ODR使用」是什麼意思?
顯然,類模板中的成員函數僅在使用ODR時才實例化。 有人可以解釋究竟是什麼意思。 wikipedia article on One Definition Rule (ODR)沒有提及「ODR-使用」。
然而,標準將其定義爲
一個變量,其名稱顯示爲潛在評估表達 是ODR使用的,除非它是滿足出現在常量表達式爲 要求的對象(5.19)和左值到右值 轉換(4.1)立即應用。
in [basic.def.odr]。
編輯:顯然這是錯誤的部分,整個段落包含不同事物的多個定義。這可能是相關的一個類模板的成員函數:
甲非過負荷函數,其名稱顯示爲 潛在評估表達或一組候選 功能的成員,如果由過載分辨率時,選擇參考 潛在評估的表達式,除非它是純粹的虛擬函數並且其名稱沒有明確限定,否則是odr-used。
但我不明白,這條規則是如何在多個編譯單元中工作的?如果我明確實例化類模板,是否所有成員函數都實例化?
請注意[basic.def.odr]/6適用於類模板的成員函數「可以有多個定義[0123]」 – dyp
*「是否所有成員函數都實例化如果我明確實例化一個類模板?「*是的,看看[temp.explicit]/8 + 9 – dyp