template <class T>
struct A {
template <class X>
void foo() {}
};
struct B {
template <class T>
void foo() {
A<T>().foo<T>(); // no need of template disambiguator?
}
};
int main() {
return 0;
}
g ++ - 5.4和-6.2接受此代码,但是clang-3.8没有并且给出以下错误消息:
main.cc:11:12:错误:使用&#39;模板&#39;要关注的关键词“foo&#39;作为一个 依赖模板名称
我认为应该有一个template
。我的问题是:g ++接受这段代码有什么理由吗?