2016-12-07 11 views
8

की टपल करने के लिए पैरामीटर पैक का विस्तार मैं की तरहसी ++ सरणियों

template<typename ...Args> 
class X { 
private: 
    std::tuple<std::array<Arg0, 255>, std::array<Arg1, 255>, ...> m_tuples; // For Arg in Args 
} 

एक वर्ग का दृष्टांत चाहते हैं मैं जानता हूँ कि यह सही सी ++ नहीं है, लेकिन मैं के पैरामीटर पैक टेम्पलेट के विस्तार के प्रभाव कैसे प्राप्त कर सकते थे ट्यूपल के भीतर आयोजित सरणी के लिए कक्षा?

उत्तर

10
template<typename ...Args> 
class X { 
private: 
    std::tuple<std::array<Args, 255>...> m_tuples; // For Arg in Args 
}; 

... तुम इतने करीब होने की उम्मीद नहीं की थी, आप :)

+0

मैंने नहीं किया था! क्या आप समझा सकते हैं कि यह विस्तार कैसे काम करता है? मैं इस बारे में सोचने में फंस गया हूं क्योंकि मैं पैरामीटर पैक के पहले तत्व को पॉप-अप करने, फ़ंक्शन कॉल को रिकर्सिव कर दूंगा। – shane

+0

@shane नियम मेरे लिए थोड़ा अस्पष्ट हैं, लेकिन छोटे पैक विस्तार में एक (वाक्य रचनात्मक) पैटर्न को डुप्लिकेट करके और इस पैटर्न के भीतर तर्क पैक को प्रतिस्थापित करके काम करता है। यहां पैटर्न संपूर्ण 'std :: array ' है, जो 'Args' को बदलकर आप जो भी कर रहे हैं उसमें विस्तारित हो जाता है। – Quentin

+2

@ शेन देखें http://stackoverflow.com/questions/17652412/what-are-the-rules-for-the-token-in-the-context-of-variadic- टेम्पलेट्स। –

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