会报这个错,基本上就是这么个情况。
object->function<var>(par,par); 这么用的时候gcc把<var>这个尖括号的左边识别成了小于号。
解决也很简单。最后还是在s站找到的答案。c++ - CPP templated member function specialization - Stack Overflow
按照我的理解,简单来说就是,编译器读到function < var这里的时候,它不知道这个function是个函数还是个变量,或者说它误认为这个function是变量,所以<就理解为小于号,而不是尖括号的一部分。
解决方法就是在function左侧加上template关键字,告诉编译器,这是个用了模版的函数。