Почему это незаконное заявление?
> std::views::iota r(0, 10);
error: expected ‘;’ before ‘r’
но это работает
> auto r = std::views::iota(0, 10);
views::iota
— это объект точки настройки, который представляет собой объект-функцию, которая перегружает operator()
, возвращающий объект ranges::iota_view
.
ranges::iota_view
— это детали реализации views::iota
, который является типом класса. Так что вы, вероятно, имеете в виду
std::ranges::iota_view r(0, 10);
Однако вам всегда следует предпочитать использовать view::meow вместо ranges::meow_view.