たとえば、GCC と clang はどちらも次のコードのコンパイルに失敗します。
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-declarationは、using-declaration が表示されるポイントより上で宣言されたオーバーロードのみをインポートし、後で表示される可能性があるもの (ただし、名前の使用前) はインポートしないことを示唆しています。
この動作は正しいですか?