क्या यह काम करने का कोई तरीका है? मुझे आशा है कि आप अनुमान लगा सकेंगे कि, मैं पुनरावर्ती जोड़े के माध्यमबढ़ावा :: संस्करण रिकर्सिव परेशानी
#include <boost/variant.hpp>
#include <utility>
struct nil {};
typedef boost::make_recursive_variant<nil, std::pair<int, boost::recursive_variant_ >>::type list_t;
int main() {
list_t list = { 1, (list_t){ 2, (list_t){ 3, nil() } } };
return 0;
}
बोलने के लिए थोड़ा देर से 'नफरत लाने' के लिए खेद है, इसलिए बोलने के लिए, लेकिन मैं बस एक संबंधित प्रश्न से इसमें भाग गया। Boost.variant में पॉइंटर्स डालने की कोई आवश्यकता नहीं है - recursive_variant wrapper आंतरिक रूप से 'boost :: shared_ptr' का उपयोग करता है, इसलिए आपका 'अनंत आकार' दावा गलत है। स्टैक-आधारित योजना की गारंटी नहीं है और केवल तभी उपयोग किया जाता है जब सभी रचनाकार (टेम्पलेट पैरामीटर के लिए) में एक नोट्रो कन्स्ट्रक्टर होता है। आप इसके बारे में यहां और अधिक पढ़ सकते हैं: http://www.boost.org/doc/libs/1_46_1/doc/html/variant/design.html#variant.design.never-empty ('अस्थायी ढेर बैकअप' देखें) । – phooji