Почему views::split игнорирует пустой поддиапазон после разделителя, если это последний элемент входного диапазона?
Для следующего кода:
#include <iostream>
#include <string>
#include <ranges>
int main()
{
std::string s = " text ";
auto sv = std::ranges::views::split(s, ' ');
std::cout << std::ranges::distance(sv.begin(), sv.end());
}
вывод - 2. Пустой поддиапазон после последнего разделителя отсутствует в выходном диапазоне.
Это кажется непоследовательным, поскольку я ожидаю, что N+1
поддиапазоны в выходном диапазоне, если есть N
вхождения разделителя во входном диапазоне. Почему это не так?
Обратите внимание, что range-v3 делает то же самое, поэтому я уверен, что это сделано намеренно, но я хотел бы знать, почему.