模板消歧器需要在非模板类的成员函数模板中使用clang但不能使用g ++吗?

时间:2017-03-17 02:34:06

标签: c++ templates g++ clang++

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 ++接受这段代码有什么理由吗?

0 个答案:

没有答案