Je veux écrire une fonction pour retourner vrai si T
est l'un des Ts...
template<class T, class... Ts>
bool is_one_of<T, Ts...>();
Par exemple, is_one_of<int, double, int, float>
rendements true
, et is_one_of<int, double, std::string, bool, bool>
rendements false
.
Ma propre mise en œuvre est
template<class T1, class T2>
bool is_one_of<T1, T2>() {
return std::is_same<T1, T2>;
}
template<class T1, class T2, class... Ts>
bool is_one_of<T1, T2, Ts...>() {
if (std::is_same<T1, T2>) {
return true;
}
else {
return is_one_of<T1, Ts...>();
}
}
Cette vérification me semble commune, alors je me demande s'il existe déjà une telle fonction dans la bibliothèque standard.