次のプログラムは、C++ 標準に従って整形式ですか?
namespace X { class A; }
namespace Y { using X::A; class A {}; }
int main() {}
さまざまなコンパイラでさまざまな結果が得られます。
- gcc はエラーなしでコンパイルします。
- Visual C++ でエラー C2888: 'X::A': シンボルを名前空間 'Y' 内で定義できません
私のプログラムが違反している C++ 標準の規則は見つかりません。
プログラムの形式が正しい場合、Visual Studio でエラーが発生するのはなぜですか?
プログラムが整形式でない場合、c++ 標準のどの規則に違反し、gcc がエラーを出さないのはなぜですか?
私は自分のプログラムをコンパイルしようとはしていません。C++ 標準に従って整形式であるかどうか、およびテストした 2 つのコンパイラの動作が異なる理由を調べようとしています。