मैं http://en.cppreference.com/w/cpp/language/operators में पढ़ें:ओवरलोडेड ऑपरेटर का शॉर्ट सर्किट && और || में सी ++ 17
बूलियन तर्क ऑपरेटरों, ऑपरेटर & & और ऑपरेटर ||
के विपरीत बनाया-इन संस्करणों, भार के उनके बाएँ संकार्य सही से पहले क्रम नहीं है, और (सी ++ 17 तक) शॉर्ट सर्किट लागू नहीं कर सकते मूल्यांकन।
(मेरा जोर)।
ऑपरेटर & & और ऑपरेटर || के लिए सी ++ 17 सहायक शॉर्ट सर्किट के लिए कोई संसाधन या कोड उदाहरण नहीं मिला। क्या यह सी ++ 17 पैरामीटर पैक फोल्ड एक्सप्रेशन से संबंधित है? इसके साथ खेलने की कोशिश की लेकिन ओवरलोडेड ऑपरेटर & & और || के लिए शॉर्ट सर्किट व्यवहार नहीं बना सका सी ++ 17 गुना अभिव्यक्ति के साथ।
कोड:
class A {
bool val;
public:
A(bool b) : val(b) { cout << "A born as " << boolalpha << val << endl;}
template<typename ...Args>
bool operator&&(Args&&... args) {
return (val && ... && args.val);
}
};
int main() {
cout << boolalpha;
cout << (A{false} && A{true}) << endl;
cout << (A{true} && A{false}) << endl;
cout << (A{false} && A{false}) << endl;
}
आउटपुट:
A born as true
A born as false
false
A born as false
A born as true
false
A born as false
A born as false
false
http://coliru.stacked-crooked.com/a/f0b5325899c2fe6b
नोट: के अनुक्रम बाएं से दाएं भी वर्तमान जीसीसी संस्करण में नहीं हो रहा है, के साथ संकलित सी ++ 17 झंडा।
कृपया दिखाएं कि आपने क्या प्रयास किया है जो काम नहीं करता है। शायद आप इस्तेमाल किए गए कंपाइलर और संस्करण का चयन कर सकते हैं [यहां] (https://godbolt.org/) और लिंक पोस्ट करें। – wally
* शॉर्ट सर्किट व्यवहार नहीं बना सका * त्रुटि क्या थी? या क्या कोई त्रुटि नहीं थी और आपके साइड इफेक्ट्स थे जो डाउनस्ट्रीम ऑपरेटरों के लिए खुद को प्रदर्शित करते थे? या आपने कोड के माध्यम से कदम रखा और यह अन्य ऑपरेटरों में कदम रखा? – wally
@Mus प्रश्न मानक में परिभाषित व्यवहार के बारे में है, न कि कोड जो काम नहीं करता है। – interjay