Closed apolukhin closed 2 years ago
Nate Reinar Windwood, 16 июля 2018, 14:27 *по аналогии
Nate Reinar Windwood, 25 июля 2018, 21:16 Хоть кто-нибудь из поставивших минус аргументировал бы, что ли :-/
Andrey, 27 июля 2018, 11:07 Nate Reinar Windwood, я не ставил минусов, но вот моя версия, почему в том виде, что Вы предлагаете это ужасная идея (и, кстати, в python'е это резализовано по-нормальному).
Для многих структур данных (к примеру, std::[unordered_]{set,map}) реализация contains через std::find -- это совершенно точно не то, чего хотелось бы.
Nate Reinar Windwood, 8 августа 2018, 22:16 Andrey, ну, значит, нужна функция std::contains, которая будет по-разному перегружена для разных структур, и в которую будет разворачиваться сабж.
yndx-antoshkka, 27 июля 2018, 11:48 Ещё не успел поставить минус... Но аргументация следующая:
Добавлять малоизвестный "синтаксический сахар" в язык - как правило очень плохая идея. Это ведёт к меньшей читаемости кода и риску скатиться в perl. Если собрать весь синтаксический сахар, что предлагали за 5 лет, то получится вот такой C++ код:
while (foo ~~ { @... }) {
return {} unless foo != bar;
foo += $&;
} else {
static decltype(return) var;
var += @ + ...;
++ g{hello}{word}[1:var:max];
if ("hello":var)
{};
var;
}
{}
Что тут происходит - не разобрать.
Александр Коновалов, 26 сентября 2018, 8:56 Ещё один минус данного решения:
Предполагается, что данный код упростит поиск в контейнерах элемента. Для std::map и std::unordered_map элементом является std::pair. Т.е. в рамках данного синтаксиса получается:
if (std::make_pair("key", "value") : my_map)
// ...
Это выглядит довольно странным и бесполезным.
Закрываю, как непопулярную идею. Голосование в международном комитете не пройдёт.
Перенос предложения: голоса +2, -10 Автор идеи: Nate Reinar Windwood
Python-style итерацию уже сделали, почему бы теперь не сделать и проверку наличия элемента в контейнере? Это упрощает код и просто логично.