Warum ist das so?
Ich kann mir vorstellen, dass der Grund darin liegt, dass die iota_view von Foos nicht weiß, wie man einen Foo vorantreibt. Aber wie kann ich es wissen lassen?
Code: Select all
#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
Mobile version