Warum hängt die Direktzugriffseigenschaft von iota_view vom Elementtyp ab? Und wie schreibt man ein Foo, sodass iota(FooC++

Programme in C++. Entwicklerforum
Anonymous
 Warum hängt die Direktzugriffseigenschaft von iota_view vom Elementtyp ab? Und wie schreibt man ein Foo, sodass iota(Foo

Post by Anonymous »

Der folgende Code kann nicht kompiliert werden, wenn Sie die kommentierte Zeile auskommentieren. (Compiler Explorer)
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

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post