首頁 > 後端開發 > C++ > 何時使用 C 類模板成員函數 ODR?

何時使用 C 類模板成員函數 ODR?

Barbara Streisand
發布: 2024-12-07 13:24:13
原創
918 人瀏覽過

When are C   Class Template Member Functions ODR-Used?

理解 C 中的 ODR 使用

在類模板的上下文中,遇到了術語「odr-use」。這個概念對於理解類別模板中成員函數的實例化起著至關重要的作用。

根據 C 標準 [basic.def.odr],如果變數或函數用於需要實際定義而不僅僅是聲明的上下文。這包括在表達式中直接引用或可能評估變數或函數的情況。但是,對於可以參與常數表達式並且立即應用左值到右值轉換的物件存在例外。

對於類別模板成員函數,定義變得更加具體:非重載函數在潛在求值表達式中引用的(成員或其他)或作為重載候選集的一部分的(成員或其他)是odr 使用的,除非它是純虛函數且其名稱未明確顯示合格。

此定義可能會引發有關 ODR 使用規則如何跨多個編譯單元應用的問題。需要澄清的是,只有在至少一個編譯單元內需要 ODR 使用時,才會實例化類別模板。簡單地實例化一個類別模板​​並不會自動實例化它的所有成員函數,除非它們明確地使用了 odr。

總之,ODR-use 是 C 標準中定義的一個概念,用於確定哪些實體需要實際定義。它在模板實例化中發揮重要作用,成員函數只有在編譯單元內使用 odr 時才會被實例化。

以上是何時使用 C 類模板成員函數 ODR?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板