Я хочу написать функцию, которая возвращает true, если T является одним из Ts...
template<class T, class... Ts>
bool is_one_of<T, Ts...>();
Например, is_one_of<int, double, int, float> возвращает true, а is_one_of<int, double, std::string, bool, bool> возвращает false.
Моя собственная реализация
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...>();
}
}
Эта проверка кажется мне общей, поэтому мне интересно, есть ли такая функция в стандартной библиотеке.