Страницы

Поиск по вопросам

четверг, 13 декабря 2018 г.

Оператор для нескольких объектов

Есть ли в c++ возможность, позволяющая применять оператор для нескольких объектов? Короче, что-то типа этого:
int i = 5; if (i == { 1, 2, 3, 5 } ) // if (i == 1 || i == 2 ...) { cout << "Hello world!" << endl; }


Ответ

В комментарий не помещаюсь...
Чтоб одним оператором и именно ==
template class Has { private: vector data; public: explicit Has(initializer_list lst):data(lst){} bool operator ==(const T& value) const { return find(data.cbegin(),data.cend(),value) == data.cend(); } };
template Has in(initializer_list lst) { return Has(lst); }
int main() { int i = 5; if (in({1,2,3,4,7,8}) == i) // Без in - if (Has({1,2,3,4,7,8}) == i) { cout << "Found
"; } }
Это путь чуть длиннее, но зато не нужно писать явно тип - ну, in
Если через функцию - то можно воспользоваться функцией с переменным числом аргументов.
Но стоит ли эта овчинка выделки?

Комментариев нет:

Отправить комментарий