1. ホーム
  2. c++

[解決済み] staticキーワードの非推奨...もういらない?

2023-02-06 03:27:56

質問

C++では static キーワードを使用して、シンボル(変数または関数宣言)の可視性に影響を与えることができます。

n3092 では、これは非推奨とされました。

附属書D.2 [depr.static]です。

名前空間スコープでオブジェクトを宣言する場合、staticキーワードの使用は非推奨です(3.3.6参照)。

n3225では、これは削除されました。

のみの記事で、私が見つけた はやや非公式なものです。

それは、C との互換性 (および C プログラムを C++ としてコンパイルする機能) のために、非推奨が迷惑であることを強調するものです。しかし、C プログラムを C++ として直接コンパイルすることは、すでにフラストレーションのたまる経験であるため、それが検討に値するかどうかはわかりません。

なぜそれが変更されたのか、誰か知っていますか?

どのように解決するのですか?

C++ 標準コア言語の不具合報告と受理された問題、改訂 94 版 の下に 1012. Undeprecating static と記している。

7.3.1.1 [namespace.unnamed] では、namespace スコープで変数を宣言するための static キーワードの使用は、unnamed namespace が優れた代替手段を提供するため非推奨としていますが、予見できる将来のどの時点でもこの機能が削除されることはないでしょう。

基本的にこれは、非推奨の static は本当に意味がないのです。C++から削除されることはないでしょう。 というのも、無名の namespace を使用する場合、内部リンクを持つ関数やオブジェクトを宣言するのに必要な定型的なコードは必要ないからです。