Является ли контейнер концептуальным?

Из документации диапазонов-v3:

view::all

Верните диапазон, содержащий все элементы в источнике. Полезно для преобразования контейнеров в диапазоны.

Что меня смущает:

  1. Под какими сценариями view::all используются?
  2. Являются ли стандартные контейнеры (std::vector, std::list и т.д.) Концептуально не диапазонами?

Например:

auto coll = std::vector{ 1, 2, 2, 3 };  
view::all(coll) | view::unique; // version 1
coll | view::unique; // version 2

Есть ли разница между version 1 и version 2?

Ответы

Ответ 1

Эгад, эта часть документации не обновлялась, так как терминология с диапазоном-v3. Да, контейнер - это Range (он имеет begin() и end() которые возвращают пару итераторов/дозорных). Это не вид (диапазон с O (1) копирование/перемещение). Итак, документация для view::all должна читать:

view::all

Верните представление, содержащее все элементы в источнике. Полезно для преобразования контейнеров в представления.

Чтобы ответить на ваш второй вопрос, нет никакой разницы между версией 1 и версией 2 в вашем коде.