[解決済み] 無名名前空間が静的の代わりとして「優れている」理由とは?重複
2022-12-27 04:10:34
質問
C++標準の$7.3.1.1/2項を読み取ります。
static キーワードの使用は オブジェクトを宣言する場合、static キーワードの使用は推奨されません。 名前空間スコープでオブジェクトを宣言する場合、static キーワードの使用は非推奨です。 は という優れた代替手段を提供します。
なぜ無名の名前空間が優れた代替案と見なされるのか理解できないのですが?その根拠は何ですか?規格がどうなっているかは以前から知っていましたが、この質問に答えるときでさえ真剣に考えたことはありませんでした。 static に対する unnamed namespace の優位性?
で説明したように、ユーザー定義型にも適用できるため、優れているとされているのでしょうか? の回答 ? それとも、私の知らない他の理由もあるのでしょうか?特に、私の回答はそのような理由ですが、標準では何か別の理由があるかもしれないので、これを聞いているのです。
どのように解決するのですか?
- ご指摘の通り、名前空間は関数やオブジェクトだけでなく、何にでも使えます。
-
グレッグが指摘しているように
static
はすでにあまりにも多くのことを意味します。 - 名前空間は、グローバルスコープで可視性を制御するための統一された一貫した方法を提供します。同じもののために異なるツールを使用する必要はありません。
- 匿名名前空間を使用する場合、関数/オブジェクト名は適切にマングリングされ、マングリング解除後のシンボルテーブルで、静的リンクで "xyz" だけではなく "(anonymous namespace)::xyz" というように表示できるようにします。
- 下のコメントで指摘されているように、静的なものをテンプレートの引数として使うことは許されませんが、匿名の名前空間では問題ありません。
- もっと?おそらく、しかし今は何も思いつきません。
関連
-
[解決済み】C++ 非推奨の文字列定数から「char*」への変換について
-
[解決済み】エラー:strcpyがこのスコープで宣言されていない
-
[解決済み】指定範囲内の乱数で配列を埋める(C++)
-
[解決済み】C++ - 適切なデフォルトコンストラクタがない [重複]。
-
[解決済み] using namespace std;」はなぜバッドプラクティスだと言われるのですか?
-
[解決済み] 要素ごとの加算は、結合ループよりも分離ループの方がはるかに高速なのはなぜですか?
-
[解決済み] usingディレクティブはネームスペースの内側と外側のどちらを使うべきですか?
-
[解決済み] なぜテンプレートはヘッダーファイルでしか実装できないのですか?
-
[解決済み] JavaScriptで名前空間を宣言するには?
-
[解決済み] 無名/匿名の名前空間と静的関数の比較
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] error: 'ostream' does not name a type.
-
[解決済み】Cygwin Make bash コマンドが見つかりません。
-
[解決済み】fpermissiveフラグは何をするのですか?
-
[解決済み】「Expected '(' for function-style cast or type construction」エラーの意味とは?
-
[解決済み】C++の余分な資格エラー
-
[解決済み] [Solved] インクルードファイルが開けません。'stdio.h' - Visual Studio Community 2017 - C++ Error
-
[解決済み】 while(cin) と while(cin >> num) の違いは何ですか?)
-
[解決済み] 無名/匿名の名前空間と静的関数の比較
-
[解決済み】C言語の「static」関数とは?
-
[解決済み] 無名名前空間の静的に対する優越性?