2016-09-30 7 views
8

यह एक मूर्खतापूर्ण सवाल लगता है हो सकता है, लेकिन जब मैं SOF में इस उत्तर को देखने के लिए कोशिश में मतलब है,इस क्या करता है ... (तीन बिंदु) C++

Compile time generated tables

मैं इस जैसे बयानों का उल्लेख किया :

template< 
    typename IntType, std::size_t Cols, 
    IntType(*Step)(IntType),IntType Start, std::size_t ...Rs 
> 
constexpr auto make_integer_matrix(std::index_sequence<Rs...>) 
{ 
    return std::array<std::array<IntType,Cols>,sizeof...(Rs)> 
     {{make_integer_array<IntType,Step,Start + (Rs * Cols),Cols>()...}}; 
} 

अधिक विशेष रूप से:

std::size_t ...Rs 

या

std::index_sequence<Rs...> 

क्या ... इसका मतलब है?

संपादित करें 1

सवाल है कि इस प्रश्न से संबंधित मूल प्रश्न के रूप में रिपोर्ट नहीं सही है:

यही सवाल इन दो मामलों का जवाब नहीं कर सकते हैं (जैसा कि वे बहस के चर संख्या के साथ काम करता है नहीं कर रहे हैं)

std::size_t ...Rs 
std::index_sequence<Rs...> 

लेकिन यह एक अच्छा विवरण है:

https://xenakios.wordpress.com/2014/01/16/c11-the-three-dots-that-is-variadic-templates-part/

+0

https: कि प्रकार का एक चर (जैसे Rs... my_var) के साथ अनपैक किया जा सकता है //xenakios.wordpress .com/2014/01/16/c11-the-three-dots-that-is-variadic-templates-part/ –

+0

वे निर्दिष्ट करते हैं [variadic arguments] (http://en.cppreference.com/w/cpp/language/variadic_arguments), उनके उपयोग के लिए डुप्लिकेट लिंक देखें। – CoryKramer

+0

@CoryKramer: धन्यवाद, लेकिन वे नहीं, उदाहरण के लिए std :: size_t ... रुपये तर्कों की चर संख्या के साथ एक फ़ंक्शन नहीं है, यह ब्लॉग में समझाया गया तर्क की चर संख्या के साथ एक टेम्पलेट है। – mans

उत्तर

5

इसका एक पैरामीटर पैक कहा जाता है और शून्य या अधिक टेम्प्लेट पैरामीटर को दर्शाता है:

http://en.cppreference.com/w/cpp/language/parameter_pack

std::size_t ...Rs 

प्रकार std::size_t के पैरामीटर पैक है।

my_var... 

यह पैटर्न भारी बहस के एक (अज्ञात) राशि अग्रेषण में प्रयोग किया जाता है:

template < typename... T > 
Derived(T&&... args) : Base(std::forward<T>(args)...) 
{ 
} 
संबंधित मुद्दे