Closed apolukhin closed 3 years ago
Andrey Davydov, 4 мая 2018, 10:34
Общий вопрос: насколько актуально менять функции из
int sum(Range && range) {
int res = 0;
for (int i : range)
res += i;
return i;
}
но не могу
int sum(Range && range) {
return std::accumulate(range.begin(), range.end(), 0);
}
В Ranges TS я знаю эта проблема исправлена, а на сколько, как Вы считатете, актуально было бы исправлять
template< class InputIt, class T >
T accumulate( InputIt first, InputIt last, T init );
на
template< class InputIt, class Sentinel, class T >
T accumulate( InputIt first, Sentinel last, T init );
в С++20?
yndx-antoshkka, 4 мая 2018, 18:34 Вы подняли много интресных вопросов:
У меня есть необоснованный страх, что Ranges не успеют попасть в C++20. Поэтому constexpr добавляю к существующему
Исправлять имеющиеся алгоритмы не опираясь на Ranges комитет точно не будет. Это огромная работа и такое исправление будет дублировать работу по Ranges. В итоге просто оба предложения замедлятся.
Интереснее другое: можно ли Ranges влить в namespace std, чтобы существующий код начал использовать Ranges из коробки, а алгоритмы не дублировались в двух разных namespace. Задам этот фопрос авторам Ranges.
Перенос предложения: голоса +9, -0 Автор идеи: yndx-antoshkka
Необходимо для рефлексии, метаклассов и упрощения метапрограммирования.
Алгоритмы не используещие swap помечаются как constexpr в https:/wg21.link/p0202
Оставшиеся алгоримы, использующие swap, помечаются как constexpr в https:/wg21.link/p0879