功能模板被误认为是运营商<

时间:2015-10-19 19:37:54

标签: c++ templates c++11

如何编译以下代码?

template<typename T> struct A{
  template<int x> void foo() { }
};

template <typename T> void bar()
{
    A<T> a;
    a.foo<22>(); //< error: invalid operands of ... to binary ‘operator<’
}

int main(void)
{
    bar<int>();
}

在包含错误消息的行上,我想从a.foo内拨打bar,设置相应的模板。

基于错误,编译器想要解析该行(我认为):

(a.foo < 22) > ()

如何将其解析为函数调用而不是<

看起来像是最令人烦恼的解析,但我以前从未见过它。

0 个答案:

没有答案