विषय पर बढ़ें

अंतिम अद्यतन:2026-10-12

C++17 std::variant

हाल में कुछ दिलचस्प सवाल सोचे, एक छोटा सारांश बनाते हैं, आप कितने सवालों के जवाब दे सकते हैं?

नोट: पूरे जवाब 星球 पर खोले जाएँगे।

सवाल 1: std::variant कंस्ट्रक्टर कितने प्रकारों के कंस्ट्रक्टर को कॉल करता है, 1? 2? n?

std::variant<std::string, int> a1;
std::variant<X, Y> a2;

संबंधित सवाल:

  1. std::variant का डिफ़ॉल्ट कंस्ट्रक्शन व्यवहार कैसा होता है?
  2. जब std::variant में शामिल प्रकार का डिफ़ॉल्ट कंस्ट्रक्टर न हो तो क्या होगा?
  3. std::variant के प्रारंभिक मान का प्रकार कैसे निर्दिष्ट करें?

सवाल 2: क्या नीचे दिया कोड सामान्य रूप से चल सकता है? यदि चल सकता है तो कारण बताएँ, अन्यथा कुछ समाधान दें।

struct X {
    X(int v) : v_(v) {}
    int v_;
};

struct Y {
    Y(double v) : v_(v) {}
    double v_;
};

std::variant<X, Y> a1;

संबंधित सवाल:

  1. std::variant में डिफ़ॉल्ट कंस्ट्रक्टर वाला प्रकार कैसे जोड़ें?
  2. जब std::variant की प्रकार सूची में कोई डिफ़ॉल्ट कंस्ट्रक्टर न हो, तो कौन से समाधान हैं?
  3. डिफ़ॉल्ट कंस्ट्रक्शन समस्या से बचने के लिए std::variant को स्पष्ट रूप से कैसे कंस्ट्रक्ट करें?

सवाल 3: monostate क्या है, और यह किस समस्या को हल करता है?

संबंधित सवाल:

  1. std::variant में std::monostate का उपयोग कैसे करें?
  2. std::monostate के आने से std::variant के डिज़ाइन पर क्या प्रभाव पड़े?
  3. किन परिस्थितियों में std::monostate का उपयोग करना उचित है?

सवाल 4: defer_lock_t, try_to_lock_t, adopt_lock_t इन तीनों में क्या अंतर है? किन परिदृश्यों में उपयोग करें?

संबंधित सवाल:

  1. defer_lock_t के उपयोग के परिदृश्य और क्रियान्वयन संरचना क्या है?
  2. try_to_lock_t म्यूटेक्स के लॉक करने के प्रयास को कैसे संभालता है?
  3. adopt_lock_t द्वारा पहले से लिए लॉक की स्वामित्व संभालते समय किन बातों का ध्यान रखना चाहिए?

संबंधित विषय

टिप्पणियाँ