我尝试使用模板参数X
创建模板化类,该模板参数引用X
中定义的类或typedef。这段代码:
template <class X>
struct C {
void Method(X::Child c);
};
没有编译,因为:
test.cc:3:20: error: ‘X::Child’ is not a type
void Method(X::Child c);
^~~~~
我对SFINAE的理解是允许的;当模板使用类型X
实例化而没有内部类型名为Child
的模板时,我希望会出现这种错误,但在这里我得到错误而根本没有实例化模板。