[Bug c++/88485] New: [9 regression] parse error on explicitly specialized assignment call
sss@li-snyder.org
gcc-bugzilla@gcc.gnu.org
Thu Dec 13 16:34:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88485
Bug ID: 88485
Summary: [9 regression] parse error on explicitly specialized
assignment call
Product: gcc
Version: 9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: sss@li-snyder.org
Target Milestone: ---
hi -
gcc9 rejects the following code:
-------------------------------------------------------------
template <class T> class Base {};
class Block : public Base<Block> {};
template<typename T>
class Foo
{
template<typename Other>
Block& operator=(const Base<Other>& other);
Block& operator=(const Block& other)
{
return operator=<Block>(other);
}
};
-------------------------------------------------------------
$ cc1plus -quiet -version x.cc
GNU C++14 (GCC) version 9.0.0 20181212 (experimental) (x86_64-pc-linux-gnu)
compiled by GNU C version 9.0.0 20181212 (experimental), GMP version
6.1.2, MPFR version 3.1.6-p2, MPC version 1.0.2, isl version isl-0.16.1-GMP
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
GNU C++14 (GCC) version 9.0.0 20181212 (experimental) (x86_64-pc-linux-gnu)
compiled by GNU C version 9.0.0 20181212 (experimental), GMP version
6.1.2, MPFR version 3.1.6-p2, MPC version 1.0.2, isl version isl-0.16.1-GMP
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: c0eebf4a7781166f39f275d6d099325f
x.cc: In member function ‘Block& Foo<T>::operator=(const Block&)’:
x.cc:12:27: error: expected primary-expression before ‘>’ token
12 | return operator=<Block>(other);
| ^
-------------------------------------------------------------
The same code is accepted by both gcc 8.2.1 and clang 6.0.1.
The error also goes away if the class `Foo' is changed to be a non-template
class,
or if `operator=' is changed to a named method.
More information about the Gcc-bugs
mailing list