< ;:无法开始模板参数列表
问题描述:
我收到一个错误< ;:不能在g ++编译器开始模板参数列表。代码
I get an error <: cannot begin a template argument list on g++ compiler. Code
template<typename T> class SomeClass;
class Class;
SomeClass<::Class>* cls;
答
根据最大Munch标记化原则有效的C ++标记必须收集/具有尽可能多的连续字符。
According to the Maximal Munch tokenization principle a valid C++ token must collect/have as many consecutive characters as possible.
<:
是有向图(符号 [)。
Digraph Equivalent
<: [
:> ]
<% {
%> }
%: #
所以 SomeClass< :: Class> * cls; $ c>被解释为
SomeClass [:Class> * cls;
这没有任何意义。
So SomeClass<::Class>* cls;
is interpreted as SomeClass[:Class>* cls;
which doesn't make any sense.
解决方案:在<
和之间添加一个空格:
SomeClass< ::Class>* cls;
^
|
White Space