Я хочу написать функцию, которая возвращает 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...>();
}
}
Эта проверка кажется мне общей, поэтому мне интересно, есть ли такая функция в стандартной библиотеке.