[Bug c++/49931] valid code rejected (named operator)
manu at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Sep 20 21:49:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=49931
Manuel López-Ibáñez <manu at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |rejects-valid
Last reconfirmed|2012-08-24 00:00:00 |2018-9-20
CC| |manu at gcc dot gnu.org
Summary|bug when use named |valid code rejected (named
|operators |operator)
--- Comment #2 from Manuel López-Ibáñez <manu at gcc dot gnu.org> ---
GCC 9 says:
<source>: In member function 'FOO2<T>::operator FOO2<T>::type() const':
<source>:10:48: error: 'struct FOO' has no member named 'operator
FOO2<T>::type'
10 | operator type() const { return t->operator type(); }
| ^~~~
Clang compiles it.
Testcase:
struct FOO
{
operator int() const { return static_cast< int >(7); }
operator double() const { return static_cast< double >(7); } };
template < typename T >
struct FOO2
{
typedef T type;
operator type() const { return t->operator type(); }
private:
FOO* t;
};
int main()
{
FOO2< int > foo2; foo2.operator int();
return 1;
}
More information about the Gcc-bugs
mailing list