I get an error <: cannot begin a template argument list on g++ compiler. Code
template<typename T> class SomeClass;
class Class;
SomeClass<::Class>* cls;
See Question&Answers more detail:osI get an error <: cannot begin a template argument list on g++ compiler. Code
template<typename T> class SomeClass;
class Class;
SomeClass<::Class>* cls;
See Question&Answers more detail:osAccording 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