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
};

int main ()
{}