尖括号位置
模板名称后的第一个左括号解释为模板参数列表的一部分,而不是解释为大于运算符。 左尖括号后的第一个 > 解释为模板参数列表的结尾,除非它包含在括号内、作为嵌套模板的一部分或作为模板样式强制转换表达式(例如 static_cast<int>)的一部分。
错误放置尖括号 (<>) 会导致许多模板语法错误。 确保使用适当的间距和括号以从运算符中区分尖括号,例如 >、>> 和 ->。 例如:
TempClass< float, a > b ? a : b > test1;
应重新编写为:
TempClass< float, (a > b ? a : b) > test1;
同样,使用将尖括号用作模板参数的宏时,应特别小心。