2016-05-27 10 views
0
namespace fooo { 
    class Fooo { 
    public: 
    int a; 
    }; 
} 

namespace fooo { 
    class Test { 
    public: 
    Test(Fooo::Fooo *i) { 
     i->a = 1; 
    } 
    }; 
} 

このコードはclang(任意のバージョン)でうまくコンパイルできますが、gccで失敗します。 誰でも理由を説明できますか?C++の奇妙な名前空間の検索動作

編集: はい、私はここで問題が分かりますが、なぜそれを受け入れるのですか?私にこれを言った人は、これが標準のバグであり、欠陥報告があると言った。誰でも実際のDRを指すことができますか?

+1

gccには通知しませんでしたか?コンパイルに失敗すると、通常は診断メッセージが表示されます。 – user2079303

+0

エラー: 'fooo :: Fooo :: Fooo'は型ではなくコンストラクタの名前を指定します –

+0

最初のFoooが誤字であっても、エラー:メンバー 'fooo :: Fooo :: a'の読み込み専用オブジェクトへの割り当て –

答えて

0

GCCからのエラーメッセージは、問題がある正確に何を説明します:

t.cpp:11:16: error: ‘fooo::Fooo::Fooo’ names the constructor, not the type 
    Test(const Fooo::Fooo *i) { 
       ^

打ち鳴らすがエラーを与えないことを思わぬされます。