https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111790
Lee Killough <leekillough at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |leekillough at gmail dot com --- Comment #5 from Lee Killough <leekillough at gmail dot com> --- It seems to have been introduced in 12.1; here is another test: template<class T> bool f(T x) { return x.a<0 || x.a>(1); } struct S { int a; }; template bool f(S); > test.cpp: In function ‘bool f(T)’: > test.cpp:4:14: warning: expected ‘template’ keyword before dependent template > > name [-Wmissing-template-keyword] > 4 | return x.a<0 || x.a>(1); > | ^ > | template For warnings it is parsed as x.template a<( 0 || x.a )>(1) instead of (x.a<0) || (x.a>(1)) and the missing template keyword warning is printed. For actual compilation, it is parsed correctly.