It seems that this is the only case where one cannot declare a (typecasting) operator
without using a typedef
.
Had it been another function name or another operator x
, then it works fine:
class Foo
{
typedef void (Foo::*bool_type)() const;
public:
operator bool_type() const;
// other syntax
void (Foo::* some_func () const) () const; // ok! named function
void (Foo::* operator * () const) () const; // ok! operator *
void (Foo::* operator () const) () const; // error! typecasting operator
};
Demo.