https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104319
Bug ID: 104319
Summary: "parse error of template argument list" due to missing
space in ">==", a better error message should be given
Product: gcc
Version: 12.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: nickhuang99 at hotmail dot com
Target Milestone: ---
consider following code (https://www.godbolt.org/z/4drb17Pqn):
template<typename T>
struct A{
constexpr static int value=0;
};
template<typename T>
constexpr int Zero=A<T>::value;
static_assert(Zero<int>==0);
<source>:8:15: error: parse error in template argument list
8 | static_assert(Zero<int>==0);
| ^~~~~~~~~~~~
<source>:8:15: error: template argument 1 is invalid
Compiler returned: 1
clang gives much clear reason:
error: a space is required between a right angle bracket and an equals sign
(use '> =')
static_assert(Zero<int>==0);
^~
> =
clearly "Zero<int>" can be considered template id to avoid template argument
list error message.