I get an error <: cannot begin a template argument list on g++ compiler. Code
template class SomeClass;
class Class;
SomeClass<::Cla
According to the Maximal Munch tokenization principle a valid C++ token must collect/have as many consecutive characters as possible.
<: is a digraph (an alternative representation of symbol [).
Digraph Equivalent
<: [
:> ]
<% {
%> }
%: #
So SomeClass<::Class>* cls; is interpreted as SomeClass[:Class>* cls; which doesn't make any sense.
Solution: Add a whitespace between < and :
SomeClass< ::Class>* cls;
^
|
White Space