उदाहरण के लिए here पर चर्चा के रूप में सी ++ में परिवर्तनीय तर्कों के साथ एक फ़ंक्शन रखने के लिए मुझे पहले से ही stdarg.h
तरीका पता है। मुझे यह भी पता है कि सी ++ 11 मानक में विविधता टेम्पलेट्स हैं जैसा कि here समझाया गया है।ज्ञात प्रकारों के साथ तर्कों की परिवर्तनीय संख्या वाला एक फ़ंक्शन, सी ++ 11 रास्ता
लेकिन उपर्युक्त योजनाओं में हम दोनों को संकलित समय में संकलित प्रकारों (और हम बल नहीं दे सकते) में नहीं जानते हैं। जो मैं खोज रहा हूं वह के परिवर्तनीय तर्कों को पास करने के लिए ज्ञात प्रकारों को पास करना है। मैं इस क्योंकि मैं इसे here के बारे में पढ़ा किया जा सकता है लगता है:
variadic टेम्पलेट्स, जो भी कार्य करता है कि बहस के चर संख्या ले बनाने के लिए इस्तेमाल किया जा सकता है, क्योंकि वे पर प्रतिबंध लागू नहीं है अक्सर बेहतर विकल्प हैं तर्कों के प्रकार, अभिन्न और फ़्लोटिंग-बिंदु प्रचार नहीं करते हैं, और सुरक्षित प्रकार हैं।
क्या यह संभव है? यदि हां, तो मैं यह कैसे कर सकता हूं?
मुझे लगता है कि यह मेरी गलतफहमी के बारे में था। मैं दूसरी तरफ जानता था, लेकिन मैंने हमेशा सोचा कि पैरामीटर के प्रकार पर कोई नियंत्रण नहीं है। यह सच नहीं है। क्योंकि फ़ंक्शन किसी ज्ञात प्रकार का पहला पैरामीटर लेता है (यहां स्ट्रिंग), यह निश्चित रूप से उस प्रकार के पैरामीटर रखने के लिए मजबूर है। धन्यवाद। – melmi
आप पहले दूसरे कोड-बॉक्स को स्थानांतरित करना चाहते हैं। यह समस्या का एक बहुत अच्छा समाधान है, जबकि 'startizer_list' संस्करण नहीं है। मैं SFINAE और इस तरह के साथ एक बड़ी, जटिल चीज पोस्ट करने जा रहा था, लेकिन यह कहीं अधिक उचित है। –
@nosid आप वास्तव में घुंघराले ब्रेसिज़ का उपयोग करने से बच सकते हैं यदि आप std :: startizer_list और variadic टेम्पलेट दृष्टिकोण दोनों को मिश्रित करते हैं, तो std ::itializer_list संस्करण के चारों ओर एक भिन्न टेम्पलेट रैपर बनाकर, इस तरह: [coliru पर देखें] (http: //coliru.stacked-crooked.com/a/4baef67192a0310c)। –