可能重复:
从模板函数调用的模板类的 C++ 模板成员函数
template<class T1>
class A
{
public:
template<class T0>
void foo() const {}
};
template<class T0,class T1>
void bar( const A<T1>& b )
{
b.foo<T0>(); // This throws " expected primary-expression before ‘>’ token"
}
我可以将其更改为
b->A<T1>::template foo<T0>();
编译得很好。但是我也可以将其更改为
b.A<T1>::template foo<T0>();
编译也很好。嗯?
在原始代码的意义上,如何正确调用模板成员函数?