struct A
{
enum InnerEnum { X };
A(InnerEnum x)
{}
};
int main()
{
A a(X);
}
编译器报错:error C2065: 'X' : 未声明的标识符
编译器知道构造函数的参数类型,所以当我将 X 作为参数传递时,编译器应该知道它是有效的参数。
我知道这不是 ADL(依赖参数名查找,也称为 Koenig 查找),但我认为它很有用且方便。因为我不必写成下面这样:
A a(A::X);
我认为ADL规则应该推广到这种情况。
我说得对吗?
X
的本地变量时,这将如何应用?无论如何,从我的阅读中来看,你是在说这是无效的C++,并询问C++标准是否应该更改。这不是讨论的正确场所。 - user743382A::InnerEnum
值作为参数。该枚举定义在A
的命名空间范围内,在访问其外部时需要解析。 - WhozCraig