5

Ist es möglich, eine operator member_function_pointer_type() ohne Verwendung von typedefs zu machen (d. H. Durch Angabe des Typs des Mitgliedsfunktionszeigers inline)?Operator member_function_pointer_type() ohne typedef?

Wenn zum Beispiel der sicheren Bool Idiom Umsetzung:

class Foo 
{ 
    typedef void (Foo::*bool_type)() const; 
public: 
    operator bool_type() const; 
}; 

ist es möglich, die Art des bool_type direkt zu schreiben, wenn der Bediener erklären? Wenn das so ist, wie?

Antwort

1

Es scheint, dass dies der einzige Fall ist, in dem man keine operator (Typcasting) deklarieren kann, ohne eine typedef zu verwenden.

Wäre es eine andere Funktion Name oder eine andere operator x, dann funktioniert es gut:

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.