Почему свойство произвольного доступа iota_view зависит от типа элемента? И как написать Foo так, чтобы iota(Foo{1}, FooC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему свойство произвольного доступа iota_view зависит от типа элемента? И как написать Foo так, чтобы iota(Foo{1}, Foo

Сообщение Anonymous »

Следующий код не сможет скомпилироваться, если вы раскомментируете закомментированную строку. (Compiler Explorer)
Почему?
Я полагаю, причина в том, что iota_view Foo не знает, как продвигать Foo. Но как мне об этом узнать?

Код: Выделить всё

#include 
#include 

struct Foo {
int x;
Foo() : x{-1} {}
Foo(int x) : x{x} {}
using difference_type = int;
friend auto operator(Foo const& a, Foo const& b) {
return a.x  b.x;
}
friend bool operator==(Foo const& a, Foo const& b) {
return a.x == b.x;
}
auto& operator++() {
++x;
return *this;
}
auto operator++(int) {
auto r = *this;
++x;
return r;
}
};

int main () {
auto ints = std::views::iota(1, 30);
for (auto i : ints) {}
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/76167127/why-does-the-random-access-property-of-iota-view-depend-on-the-element-type-and[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»