निम्न कोड को संकलित करता है और "सही काम" करता है:बूस्ट :: संस्करण स्टोर संदर्भ कैसे करता है?
#include <boost/variant.hpp>
#include <iostream>
int main()
{
int a = 10;
boost::variant<int&, float&> x = a;
a = 20;
std::cout << boost::get<int&>(x) << "\n";
return 0;
}
कैसे को बढ़ावा देने करता :: संस्करण की दुकान के लिए एक संदर्भ? सी ++ मानक के अनुसार, संदर्भ कैसे संग्रहीत किए जाते हैं पूरी तरह से कंपाइलर तक है। असल में, boost::variant
कैसे पता चलता है कि संदर्भ द्वारा कितने बाइट उठाए जाते हैं? sizeof(T&) == sizeof(T)
, इसलिए यह sizeof()
ऑपरेटर का उपयोग नहीं कर सकता है। अब, मुझे पता है कि संदर्भ शायद पॉइंटर्स के रूप में लागू किए जाते हैं, लेकिन भाषा में कोई गारंटी नहीं है। get<>
का एक अच्छा स्पष्टीकरण और जब विज़िटर संदर्भ संग्रहीत कर रहा है तो विज़िटेशन कार्य करता है :)
किसी ऑब्जेक्ट में उन्हें लपेटकर। '<< आकार (std :: वेक्टर और), आकार (std :: वेक्टर ), आकार (टी); संरचना टी {std :: वेक्टर & r;}; '56, 56, 8 –