、GCCとの両方が、次のコードをコンパイルすることができない打ち鳴らす:using宣言は、using宣言の上に宣言されたオーバーロードだけをインポートしますか?例えば
struct S {};
namespace N
{
void g(S);
}
using N::g;
namespace N
{
void g(int);
}
int main()
{
g(0);
}
エラーで:
test.cpp: In function 'int main()':
test.cpp:17:8: error: could not convert '0' from 'int' to 'S'
g(0);
^
using宣言のみ点以上を宣言オーバーロードをインポートすることを示唆しているが後で出現する可能性のあるもの(名前の使用前)ではなく、使用宣言が表示されます。
この動作は正しいですか?