操作、式、ステートメント、および副作用の順序を理解するために C++ 標準を勉強しています。
関連する問題は、名前の「宣言のポイント」です。C++11 標準のセクション 3.3.2.1 で、標準は次のように述べています。
名前の宣言のポイントは、完全な宣言子 (第 8 節) の直後で、初期化子 (存在する場合) の前です...
次の段落は、例を含むメモを追加します。
注: 外側のスコープからの名前は、それを隠す名前の宣言の時点まで表示されたままです。
...例で
const int i = 2;
{ int i[i]; }
コメントには、このコード サンプルは「2 つの整数のブロック スコープ配列を宣言する」と記載されています。
サンプルコードを見て、「宣言のポイント」の定義と、外部スコープからの名前の可視性に関する注意事項を適用することで、そのコードを見て論理的に理解できるようにしたいと思います。結論として、私自身、見た目どおりのことを行うのは整形式のコードであるということです。
しかし、これらの定義と規則に基づいて、このコードをどのように見て、この結論に到達するのか理解できません。
左から右に読むと、i[]
配列の宣言はi
、外側のスコープからの使用の前に表示されるように見えるため、「宣言のポイントまで表示されたままになる」という意味は、左から右に読むことを意味することはできません検出。
「宣言の時点まで」は、「操作の順序」の意味に沿った何かを意味する必要があります。
配列宣言で、配列名の「宣言のポイント」が角括弧内の式の「後」にあることを規定している C++ 標準の定義または規則は何ですか? この場合の「後」とは正確には何を意味するのでしょうか。