Почему `accumulate` не попал в диапазоны для C++20?

Я подозреваю, что accumulate — не единственный алгоритм, который этого не сделал.

Может быть, теперь есть лучший способ выполнять накопление (свертывание) по диапазону, и поэтому accumulate устарел?


person GreenScape    schedule 17.09.2020    source источник


Ответы (1)


Нет, accumulate — вполне разумный алгоритм, и ни один другой алгоритм не делает его устаревшим. Причина, по которой его не включили в С++ 20, — просто вопрос времени. Было решено добавить как можно больше диапазонов, не беспокоясь о том, чтобы добавить все сразу. В противном случае существовал риск того, что ни один из алгоритмов с ограничениями не дожил бы до C++20, что было бы позором.

Есть еще несколько алгоритмов, которые еще не были ограничены, а также все заголовки <numeric> и <memory>.

К счастью, есть предложение добавьте эти оставшиеся алгоритмы (и я надеюсь, что они будут добавлены в С++ 23). Фактически, введение к этому предложению хорошо отвечает на ваш вопрос:

«Каждый раз, когда кто-то спрашивает, почему мы не рассмотрели алгоритмы <numeric> и <memory>: мы думали, что 187 страниц TS будет достаточно». — Кейси Картер

person cigien    schedule 17.09.2020