どのような名前空間があり、どのような規則がありますか?
注:この質問は、name spaceではなくについてnamespaceです。 C ++標準にはへの参照がいくつかありますがname space、これの定義はわかりません。標準では、ラベルとマクロは異なる名前空間にあると規定されています。への他のすべての参照name spaceは、このようにC / C ++互換性セクションにあります(現在のドラフト): これは、CとC ++の間のいくつかの非互換性の1つであり、新しいC ++名前空間定義に起因する可能性があります。この場合、名前を単一のスコープ内でタイプおよび非タイプとして宣言して、非タイプ名で非表示にすることができます。タイプ名。キーワードclass、struct、unionまたはenumを使用してタイプ名を参照する必要があります。この新しい名前空間の定義は、C ++プログラマーに重要な表記上の便宜を提供し、ユーザー定義型の使用を基本型の使用に可能な限り類似させるのに役立ちます。 この新しい名前空間の定義は何ですか?規格のどこにありますか?正確なルールは何ですか?ルールは「非タイプはタイプを非表示にする」よりも複雑なようです。同様に、これはコンパイルされません: typedef int Foo; // Foo is a type void Foo(); // not a type, but compile error, instead of hiding しかし、これは: struct Foo { }; // Foo is a type as well void Foo(); // This …