inout and opApply

Shachar Shemesh via Digitalmars-d digitalmars-d at puremagic.com
Mon Jun 20 06:47:33 PDT 2016


Please consider the following program:

struct V(T) {
     int opApply(scope int delegate(ref T value) dg) {
         return 0;
     }
     int opApply(scope int delegate(ref const T value) dg) const {
         return 0;
     }
}

struct V1(T) {
     int opApply(scope int delegate(ref inout T value) dg) inout {
         return 0;
     }
}

void main() {
     const V!int mytype1;
     V!int mytype2;
     V1!int mytype3;

     foreach( v; mytype1 ) {
     }
     foreach( v; mytype2 ) {
     }
     foreach( v; mytype3 ) { // <- This line doesn't compile: cannot 
uniquely infer foreach argument types
     }
}

So the only way to get inout to work is... not to use it?

Shachar


More information about the Digitalmars-d mailing list