Добавить операторы ||= и &&=

Evgeny Basargin
Evgeny Basargin

Иногда приходится писать подобный код:

auto systemIsOk = false;

for(auto& element : systemElements) {

    systemIsOk = systemIsOk && element.isOk();

}

Хотелось бы добавить немного синтаксического сахара в этот код:

auto systemIsOk = false;

for(auto& element : systemElements) {

    systemIsOk &&= element.isOk();

}

11
рейтинг
6 комментариев
Игорь Шаповал

Мне очень нравиться идея. Было классно, если еще можно было бы перегружать эти операторы.

Игорь Шаповал
asschool

Какая семантика? будет ли вычислена правая часть?

asschool
WPMGPRoSToTeMa

asschool, a &&= b должно быть эквивалентно a = a && b, за исключением возможной перегрузки.

WPMGPRoSToTeMa
Обновлено 
Oleg Anikin

В приведенном примере можно использовать алгоритмы std::all_of, для ||= - std::any_of.
https://en.cppreference.com/w/cpp/algorithm/all_any_none_of

Oleg Anikin
Обновлено 
Дмитрий Цителов

Полагаю, начальное значение systemIsOk должно было быть true, иначе пример какой-то бессмысленный. А так идея хорошая.

Дмитрий Цителов
Yuri Pechatnov

А чем |=, &= не устраивают? Тем, что явно к bool кастовать надо? Хотя вообще предложение хорошее, хотя бы для замкнутости

Yuri Pechatnov
Другие идеи
Группа создана, чтобы собирать предложения к стандарту C++, организовывать их внутренние обсуждения, помогать готовить их для отправки в комитет и защищать на общих собраниях в рабочей группе по С++ Международной организации по стандартизации (ISO).
Все предложения