मैं सिर्फ एक सामान्य ऑब्जेक्ट फैक्ट्री लिख रहा था और एक विविध टेम्पलेट बनाने के लिए बूस्ट प्रीप्रोसेसर मेटा-लाइब्रेरी का उपयोग कर रहा था (2010 का उपयोग करके और यह उनका समर्थन नहीं करता है)। मेरा फ़ंक्शन सही अग्रेषण करने के लिए रैवल संदर्भ और std::forward
का उपयोग करता है और यह मुझे सोच रहा है ... जब C++ 0X आता है और मेरे पास मानक कंपाइलर था, तो मैं इसे वास्तविक वैरिएड टेम्पलेट्स के साथ करूँगा। हालांकि, क्या मैं तर्क पर std::forward
पर कॉल करूंगा?किसी भिन्नता फ़ंक्शन में सभी तर्कों पर std :: आगे कैसे कॉल करेगा?
template <typename ...Params>
void f(Params... params) // how do I say these are rvalue reference?
{
y(std::forward(...params)); //? - I doubt this would work.
}
एकमात्र तरीका जिसे मैं सोच सकता हूं उसे मैन्युअल अनपॅकिंग की आवश्यकता होगी ... पैरा और मैं अभी तक काफी कुछ नहीं हूं। क्या कोई तेज वाक्यविन्यास है जो काम करेगा?
इसमें जोड़ें कि पैरामीटर कैसे पारित किए जाने चाहिए। मुझे लगता है कि ट्यूटोरियल 'शून्य एफ (पैराम्स और& ... पैराम्स' दिखाते हैं ' – UncleBens
@Uncle: जोड़ा गया, मुझे लगता है कि आप सही हैं। – GManNickG
समुद्री डाकू के दिन की तरह बात करते हुए मैं 'void f (Ar && ... arg) का उपयोग करता हूं। – woolstar