struct A
{
enum InnerEnum { X };
A(InnerEnum x)
{}
};
int main()
{
A a(X);
}
编译器抱怨:error C2065: 'X' : undeclared identifier
编译器知道构造函数的参数类型是什么,所以当我将 X 作为参数传递时,编译器应该知道它是一个有效参数。
我知道这不是 ADL(Argument-dependent Name Lookup,也称为 Koenig Lookup),但我认为它很有用且非常方便。因为我不必写如下:
A a(A::X);
我认为 ADL 规则应该推广到这种情况。
我对吗?