मैं वर्तमान में निम्न कोड के साथ संघर्ष कर रहा हूँ, आशय जिनमें से variadic variadic टेम्पलेट टेम्पलेट्स लागू करने के लिए है निम्नलिखित:variadic variadic टेम्पलेट टेम्पलेट्स
template <typename...> struct obj1 {};
template <typename...> struct obj2 {};
typedef join
<
obj1<int, int, double>,
obj1<double, char>,
obj1<char*, int, double, const char*>
>::result new_obj1;
typedef join
<
obj2<int, int, double>,
obj2<double, char>,
obj2<char*, int, double, const char*>
>::result new_obj2;
/* This should result in an error, because there are
different encapsulating objects
typedef join
<
obj1<int, int, double>,
obj1<double, char>,
obj2<char*, int, double, const char*>
>::result new_obj;
*/
ऊपर के उत्पादन में उम्मीद है कि new_obj1
और new_obj2
रूप में बनाना होगा template<int, int, double, double, char, char*, int, double, const char*> struct new_obj[1|2] {};
मैं विंडोज़ पर जीसीसी 4.6.2 का उपयोग कर रहा हूं, जो "Head<typename TailArgs...>
" के विस्तार के लिए "अपेक्षित पैरामीटर पैक से पहले ..." 'आउटपुट करता है ... "।
This error is reproducable with gcc 4.5.1। इस तरह
तर्क * नाम * अंदर 'टेम्पलेट टेम्पलेट तर्क के template' विनिर्देश वैकल्पिक और पूरी तरह से कॉस्मेटिक है, यह वास्तव में वास्तविक पैरामीटर के रूप में उपलब्ध नहीं है। –
@KerrekSB टेम्पलेट टेम्पलेट पैरामीटर के पैरामीटर प्राप्त करने का कोई तरीका है? – kmore
मैंने अपनी पोस्ट संपादित की; मैं वैरैडिक केस लापता था। आपके प्रश्न के उत्तर में: हां, एक स्पष्ट टेम्पलेट पैरामीटर (पैक) और मिलान की आपूर्ति करके। –