cpp-ru / ideas

Идеи по улучшению языка C++ для обсуждения
https://cpp-ru.github.io/proposals
Creative Commons Zero v1.0 Universal
89 stars 0 forks source link

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

Open apolukhin opened 3 years ago

apolukhin commented 3 years ago

Перенос предложения: голоса +20, -2 Автор идеи: Evgeny Basargin

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

auto systemIsOk = false;
for(auto& element : systemElements) {
    systemIsOk = systemIsOk && element.isOk();
}

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

auto systemIsOk = false;
for(auto& element : systemElements) {
    systemIsOk &&= element.isOk();
}
apolukhin commented 3 years ago

Игорь Шаповал, 20 июля 2018, 8:45 Мне очень нравиться идея. Было классно, если еще можно было бы перегружать эти операторы.

Айдар Фаттахов, 30 июля 2018, 18:22 Какая семантика? будет ли вычислена правая часть?

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

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

Дмитрий Цителов, 14 августа 2018, 20:46 Полагаю, начальное значение systemIsOk должно было быть true, иначе пример какой-то бессмысленный. А так идея хорошая.

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