मैं एक पैरामीटर के पैक में प्रकार A
खोजने की कोशिश कर रहा हूँ:एक पैरामीटर पैक में एक प्रकार खोजने के
template <int I, typename A, typename B, typename ...C>
struct index_of
{
static constexpr int const value =
std::is_same<A, B>::value ? I : index_of<I + 1, A, C...>::value;
};
template <int I, typename A, typename B>
struct index_of<I, A, B>
{
static constexpr int const value =
std::is_same<A, B>::value ? I : -1;
};
यह काम करने लगता है, लेकिन मैं nontype पैरामीटर I
, जो मैं करना चाहते हैं को खत्म करने में असमर्थ हूँ एक डिफ़ॉल्ट पैरामीटर होने के लिए, लेकिन अंत में पैरामीटर पैक की वजह से ऐसा नहीं कर सकता है। I
को कैसे हटाएं/छुपाएं, इसलिए मेटाफंक्शन अधिक उपयोगकर्ता के अनुकूल हो जाता है?
लेकिन दूसरा और तीसरा मेटाफंक्शन डुप्लिकेट का सही ढंग से समर्थन नहीं करता है। – user1095108
@ user1095108 आप सही हैं, मैंने इसे ओवरम्प्लीफाइड किया है। फिक्स्ड। – dyp