[英]Deprecating static class members in C++11
讓我們得到一些事實:
[[deprecated]]
屬性的措辭如下( 基於N4269 7.6.5 [dcl.attr.deprecated],強調我的 ):
- 該屬性可以應用於類的聲明,typedef-name, 變量 , 非靜態數據成員 , 函數 ,命名空間,枚舉,枚舉器或模板特化。
誤導性部分是“非靜態數據成員”的明確外觀,而沒有該列表中同一級別的對應部分,但在同一列表中還有另外兩個感興趣的元素。
variable
的描述是(基於3 [基本]):
- 通過聲明除非靜態數據成員或對象之外的引用引入變量。 變量的名稱(如果有)表示引用或對象。
這意味着說a variable
包含靜態數據成員
static member function
是一個function
(紅色汽車是一輛汽車,這是一個合乎邏輯的結論,我似乎沒有找到任何計數器在標准中指出這一點)。
沒有任何語法或行為問題特別適用於靜態成員,靜態函數幾乎是命名空間中的自由函數,靜態數據成員或多或少是命名空間中的全局變量,您可以棄用自由函數和全局變量..
作為獎勵,它實際上適用於主要編譯器。
總結所有這些事實基本上意味着[[deprecated]]
屬性實際上可以應用於靜態數據成員,非靜態數據成員和靜態成員函數等。
所以為了回答你的問題,根據我的理解,標准實際上允許棄用靜態成員。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.