gcc incorrectly rejects the following template code - seems to be a bug in the new (gcc 3.4) C++ parser. > g++-4.0 -Wall -W x.cpp x.cpp:6: error: spurious '>>', use '>' to terminate a template argument list x.cpp:6: error: expected primary-expression before "S" x.cpp:6: error: expected %<;%> before "S" template <int N> struct IntHolder { static const int value = N; }; template <int N, int S> struct ShrIntHolder { static const int value = IntHolder< N>>S >::value; };
Confirmed, a regression in 3.4 and mainline. W.
Looks like caused by the new parser : Search converges between 2003-12-18-trunk (#431) and 2003-12-24-trunk (#432).
Subject: Bug 18140 CVSROOT: /cvs/gcc Module name: gcc Changes by: mmitchel@gcc.gnu.org 2004-10-28 05:17:15 Modified files: gcc/cp : ChangeLog parser.c call.c gcc/testsuite : ChangeLog gcc/testsuite/g++.dg/template: error10.C Added files: gcc/testsuite/g++.dg/template: shift1.C gcc/testsuite/g++.dg/init: ref12.C Log message: PR c++/17435 * call.c (convert_like_real): Fix formatting. (initialize_reference): When binding a temporary to a base class, ensure that the nominal copy made is to the derived class, not the base class. PR c++/18140 * parser.c (cp_parser_next_token_ends_template_argument_p): Do not include ">>". PR c++/17435 * g++.dg/init/ref12.C: New test. PR c++/18140 * g++.dg/template/shift1.C: New test. * g++.dg/template/error10.C: Adjust error markers. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/ChangeLog.diff?cvsroot=gcc&r1=1.4458&r2=1.4459 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/parser.c.diff?cvsroot=gcc&r1=1.272&r2=1.273 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/call.c.diff?cvsroot=gcc&r1=1.516&r2=1.517 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.4508&r2=1.4509 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/template/shift1.C.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/template/error10.C.diff?cvsroot=gcc&r1=1.2&r2=1.3 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/init/ref12.C.diff?cvsroot=gcc&r1=NONE&r2=1.1
Subject: Bug 18140 CVSROOT: /cvs/gcc Module name: gcc Branch: gcc-3_4-branch Changes by: mmitchel@gcc.gnu.org 2004-10-28 05:28:24 Modified files: gcc/cp : ChangeLog parser.c gcc/testsuite : ChangeLog gcc/testsuite/g++.dg/template: error10.C Added files: gcc/testsuite/g++.dg/template: shift1.C Log message: PR c++/18140 * parser.c (cp_parser_next_token_ends_template_argument_p): Do not include ">>". PR c++/18140 * g++.dg/template/shift1.C: New test. * g++.dg/template/error10.C: Adjust error markers. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.3892.2.174&r2=1.3892.2.175 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/parser.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.157.2.44&r2=1.157.2.45 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.3389.2.298&r2=1.3389.2.299 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/template/shift1.C.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=NONE&r2=1.1.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/template/error10.C.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.1&r2=1.1.10.1
Fixed in GCC 3.4.3.