7.3.3項。C++2003規格の
クラスメンバーに宣言を使用することは、メンバー宣言でなければなりません。
これは、次の場合に構文エラーが発生することを意味します。
struct S1
{
static int var1;
};
using S1::var1;
以下は正常にコンパイルされますが:
namespace N2
{
int var2;
}
using N2::var2;
誰かがその背後にある理論的根拠(もしあれば)を知っていますか?
さらに、この標準は、構造体の静的データメンバーを使用した明示的な例を示し、構文エラーを引き起こす必要があることを示しています。MS C++はこのエラーを出します:
cpptest1.cxx(9):エラーC2885:'S1 :: var1':非クラススコープでの有効なusing宣言ではありません
なぜこれを禁止すべきなのかはまだはっきりしていません。