5

क्या टाइप किए गएफ़ों का उपयोग किये बिना operator member_function_pointer_type() बनाना संभव है (यानी सदस्य फ़ंक्शन पॉइंटर इनलाइन के प्रकार को निर्दिष्ट करके)?ऑपरेटर member_function_pointer_type() टाइप किए बिना टाइप?

उदाहरण के लिए, जब सुरक्षित बूल मुहावरा लागू करने:

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

यह जब ऑपरेटर की घोषणा संभव है सीधे bool_type के प्रकार को लिखने के लिए? यदि हां, तो कैसे?

उत्तर

1

ऐसा लगता है कि यह एकमात्र ऐसा मामला है जहां typedef का उपयोग किए बिना कोई (टाइपकास्टिंग) operator घोषित नहीं कर सकता है।

यह एक और समारोह नाम या किसी अन्य operator x होता है, तो यह ठीक काम करता है:

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

संबंधित मुद्दे