struct A
{
enum InnerEnum { X };
A(InnerEnum x)
{}
};
int main()
{
A a(X);
}
コンパイラは文句:error C2065: 'X' : undeclared identifier
はなぜC++ 11はこのような名前検索をサポートしていませんか?
コンパイラは、コンストラクタのパラメータの型が何であるかを知っている、私は引数としてXを渡すときに、コンパイラは、それが有効な引数である知っている必要があります。
私はこれがADL(Argument-Dependent Name Lookup、Koenig Lookupとも呼ばれます)ではないことを知っていますが、これは便利で、かなり便利だと思います。
A a(A::X);
私はこのような場合にADLルールを一般化するべきだと考えます。
私は正しいですか?
これはADL ... FDL(関数依存ルックアップ)の逆です。 –
あなたは 'X'という名前のローカル変数も持っているとき、これがどのように適用されるのか考えましたか?そして、あなたの質問を読んでいても、これは無効なC++だと言っていて、C++標準を変更するかどうかを尋ねています。これは間違った場所です。 – hvd
ありがとう、hvd。あなたは私たちに説得力のある理論的根拠を与えました。 – xmllmx