问题描述
在windows平台正常编译的c++代码,在Linux平台使用g++进行编译时遇到类似如下报错:
error: expected primary-expression before ‘>’ token
或
error: expected primary-expression before ‘)’ token
等
原因
g++对成员函数有<>等符号情况下的断句产生歧义,将<
、>
等误认为小于、大于号
解决办法
在类后明确加上.template
例:
a.function<m,n>()
改为 a.template function<m,n>()
参考资料
stackoverflow: expected primary-expression before “>” in g++ but not in microsoft compiler