#include <iostream>
using namespace std;
int print(int i)
{
cout<<endl<<i;
}
template<typename ...Args>
inline void pass(Args&&...args)
{
}
template<typename ...args>
inline void expand(args&&... a)
{
print(a) ...; //this doesn't expand
//pass(print(a)...); this works
}
int main() {
expand(1,2,3,4);
return 0;
}
यह फेंकता त्रुटि:पैरामीटर के साथ विस्तार नहीं पैक '...'
In function 'void expand(args&& ...)':
error: expected ';' before '...' token
print(a) ...;
^
parameter packs not expanded with '...':
print(a) ...;
^
क्यों इस "पास" समारोह के उपयोग के लिए आवश्यक है है?
पैरामीटर पैक विस्तार मूल रूप से जहां एक अल्पविराम से अलग किए अनुमति दी है की अनुमति है। संदर्भों की एक निश्चित संख्या है: फ़ंक्शन पैरामीटर सूचियां, टेम्पलेट पैरामीटर सूचियां, प्रारंभकर्ता आदि। एक अभिव्यक्ति मान्य संदर्भ नहीं है। एक अल्पविराम ऑपरेटर अल्पविराम से अलग सूची नहीं बनाता है। –
यदि एसओ आपको अधिक जानकारी जोड़ने के लिए कहता है, तो अधिक जानकारी जोड़ें। डमी पाठ नहीं। धन्यवाद। –