このリンクヘルプは、非修飾名のルックアップに私の疑問を明確に:ISOのn3290ドラフト
A point from C++0x draft : n3290
このプログラムは修正しなければであるによると?
EX:
namespace X {};
enum Foo
{
X = 0, #1
Y,
Z = X // X refers to the enum, not the type
};
//#1「X」のように実行このプログラムをしながら、IAMのは、エラーを取得して、シンボル
別の種類としてではなく、上記の文のリンク...列挙型指定子を含む名前空間スコープで再宣言しました。 ...など
疑問を明確にしてください。
は、そうでない場合はいずれも 名前空間
しかし、構造体Xの例では、上記のISO文に矛盾は生じませんが、ネームスペースの面では機能していません...理由を知っているかもしれません...なぜですか?それを説明してください – user751747
私はそれをやったと思った。 :-)構造体を使うと、別の構造体を宣言して名前を隠すことができます。とにかく 'struct X'を書くことでいつも構造体にアクセスできます。これはCから継承されています。名前空間はC++の機能であり、動作が異なります。 –