Sto cercando di trovare il tipo A
in un parametro confezione:trovare un tipo in una confezione parametro
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;
};
Questo sembra funzionare, ma sono in grado di eliminare il parametro non standardizzate I
, che vorrei essere un parametro predefinito, ma non può renderlo tale, a causa del pacchetto di parametri alla fine. Come eliminare/nascondere I
, quindi la metafunzione diventa più user-friendly?
Ma il secondo e il terzo metafunzionamento non supportano correttamente i duplicati. – user1095108
@ user1095108 Hai ragione, l'ho semplificato eccessivamente. Fisso. – dyp