#include <optional>
bool f() {
std::optional<int> opt;
return opt;
}
संकलन नहीं है: 'return': cannot convert from 'std::optional<int>' to 'bool'
परामर्श संदर्भ मैंने एक स्पष्टीकरण खोजने के लिए सोचा होगा, लेकिन मैंने इसे पढ़ा क्योंकि यह ठीक होना चाहिए।
जब भी किसी प्रकार T1 की अभिव्यक्ति को उस प्रकार को स्वीकार नहीं किया जाता है, लेकिन किसी अन्य प्रकार के T2 को स्वीकार करता है, तो निहित रूपांतरण किए जाते हैं; विशेष रूप से:
- जब कोई फ़ंक्शन T2 के साथ पैरामीटर के रूप में घोषित किया जाता है तो कॉल करते समय अभिव्यक्ति का उपयोग तर्क के रूप में किया जाता है;
- जब अभिव्यक्ति को ऑपरेटर के साथ एक ऑपरेटर के रूप में उपयोग किया जाता है जो T2 की अपेक्षा करता है;
- जब T2 लौटने वाले फ़ंक्शन में रिटर्न स्टेटमेंट सहित, T2 के नए ऑब्जेक्ट को इनिशियलाइज़ करना;
- जब एक स्विच स्टेटमेंट में अभिव्यक्ति का उपयोग किया जाता है (टी 2 अभिन्न प्रकार है);
- जब अभिव्यक्ति का उपयोग इफ स्टेटमेंट या लूप (T2 बूल) में किया जाता है।
operator bool()
कीstd::optional
हैexplicit
।