Я хочу иметь возможность писать на С++ нечто похожее на следующий код Python:
if x in [1, 2, 3, 5] ...
чтобы проверить, содержится ли элемент в наборе жестко заданных значений, определенных на месте. Вот так:
if (in(x, {1, 2, 3, 5})) ...
Вот возможная реализация функции in
:
template<class T>
bool in(const T& x, std::initializer_list<T> c)
{
return std::find(c.begin(), c.end(), x) != c.end();
}
Мой вопрос: действительно ли мне нужно написать эту функцию самостоятельно? Существуют ли какие-либо реализации по умолчанию там? Может быть, в boost? Я проверил boost::contains
, но работает только со строками.