簡體   English   中英

在C ++ 11中棄用靜態類成員

[英]Deprecating static class members in C++11

我遇到了不同的宏,它們允許棄用成員屬性和函數,但沒有一個討論棄用靜態類成員的可能性。

我讀到即使在C ++ 14中也不允許棄用靜態成員。

這有什么具體原因嗎?

讓我們得到一些事實:

[[deprecated]]屬性的措辭如下( 基於N4269 7.6.5 [dcl.attr.deprecated],強調我的 ):

  1. 該屬性可以應用於類的聲明,typedef-name, 變量非靜態數據成員函數 ,命名空間,枚舉,枚舉器或模板特化。

誤導性部分是“非靜態數據成員”的明確外觀,而沒有該列表中同一級別的對應部分,但在同一列表中還有另外兩個感興趣的元素。

  • variable的描述是(基於3 [基本]):
  1. 通過聲明除非靜態數據成員或對象之外的引用引入變量。 變量的名稱(如果有)表示引用或對象。

這意味着說a variable包含靜態數據成員

  • static member function是一個function (紅色汽車是一輛汽車,這是一個合乎邏輯的結論,我似乎沒有找到任何計數器在標准中指出這一點)。

  • 沒有任何語法或行為問題特別適用於靜態成員,靜態函數幾乎是命名空間中的自由函數,靜態數據成員或多或少是命名空間中的全局變量,您可以棄用自由函數和全局變量..

  • 作為獎勵,它實際上適用於主要編譯器。


總結所有這些事實基本上意味着[[deprecated]]屬性實際上可以應用於靜態數據成員,非靜態數據成員和靜態成員函數等。

所以為了回答你的問題,根據我的理解,標准實際上允許棄用靜態成員。

暫無
暫無

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

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