如何编译以下代码?
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) > ()
如何将其解析为函数调用而不是<
?
看起来像是最令人烦恼的解析,但我以前从未见过它。