2010-01-30 12 views
10

मैं कुछ जेनरेट किए गए प्रकारों को पकड़ने के लिए एक बूस्ट संस्करण का उपयोग कर रहा हूं, अभी मेरा कोड जेनरेटर प्रकारों और उन्हें रखने में सक्षम एक प्रकार के साथ एक शीर्षलेख बनाता है। प्रारंभिक समय पर, मैं संस्करण में स्वीकार्य प्रकारों को फिर से शुरू करना चाहता हूं, इस प्रकार संस्करण इस प्रकार नहीं हो रहा है।एक बूस्ट में प्रकारों पर इटरेटिंग :: variant

क्या मैं इसे एक संस्करण के साथ कर सकता हूं?

+0

क्या करने के लिए प्रकारों पर इटरेटिंग? –

+0

मुझे एक नक्शा <स्ट्रिंग, MyVariant> पॉप्युलेट करने की आवश्यकता है। – swarfrat

उत्तर

19

boost::varianttypes के माध्यम से अपने प्रकार का खुलासा करता है, जो एक एमपीएल सूची है। आप mpl::for_each का उपयोग कर एमपीएल सूचियों पर रनटाइम ऑपरेशंस कर सकते हैं:

struct printer { 
    template<class T> void operator()(T t) { 
     std::cout << typeid(T).name() << std::endl; 
    } 
}; 

// ... 
typedef boost::variant<int, char> var; 
boost::mpl::for_each<var::types>(printer()); 
+0

आप एक उपयोगी साथी हैं। धन्यवाद =] – taxilian

+0

को 'boost :: mpl :: make_identity <>' की आवश्यकता हो सकती है जब कुछ प्रकार डिफ़ॉल्ट रूप से रचनात्मक नहीं होते हैं। – TemplateRex

संबंधित मुद्दे