View difference between Paste ID: 3ETPsEsT and DxrTzZhe
SHOW: | | - or go back to the newest paste.
1
struct S(T) {
2
  T[] data;
3
  
4-
  int opApply(int delegate (ref T) dg) {
4+
  int opApply(int delegate (T*) dg) {
5
    for(size_t i = 0; i < data.length; i++) {
6-
      int result = dg(data[i]);
6+
      int result = dg(&data[i]);
7
      if(result != 0)
8
        return result;
9
    }
10
    
11
    return 0;
12
  }
13
  
14-
  int opApply(int delegate (const ref T) dg) const {
14+
  int opApply(int delegate (const T*) dg) const {
15
    for(size_t i = 0; i < data.length; i++) {
16-
      int result = dg(data[i]);
16+
      int result = dg(&data[i]);
17
      if(result != 0)
18
        return result;
19
    }
20
    
21
    return 0;
22
  }
23
  
24-
  int opApply(int delegate (size_t, ref T) dg) {
24+
  int opApply(int delegate (size_t, T*) dg) {
25
    for(size_t i = 0; i < data.length; i++) {
26-
      int result = dg(i, data[i]);
26+
      int result = dg(i, &data[i]);
27
      if(result != 0)
28
        return result;
29
    }
30
    
31
    return 0;
32
  }
33
  
34-
  int opApply(int delegate (size_t, const ref T) dg) const {
34+
  int opApply(int delegate (size_t, const T*) dg) const {
35
    for(size_t i = 0; i < data.length; i++) {
36-
      int result = dg(i, data[i]);
36+
      int result = dg(i, &data[i]);
37
      if(result != 0)
38
        return result;
39
    }
40
    
41
    return 0;
42
  }
43
}
44
45
void main() {
46
  auto s1 = S!int([0, 1, 2, 3]);
47
  auto s2 = const S!int([0, 1, 2, 3]);
48
  
49
  import std.stdio : writeln, writefln;
50
  writeln("S!int, 1 arg:");
51
  foreach(s; s1)
52-
    writeln(s);
52+
    (*s)++;
53
    
54
  writeln("S!int, 2 args:");
55
  foreach(i, s; s1)
56-
    writefln("%s: %s", i, s);
56+
    writefln("%s: %s", i, *s);
57
58
  writeln("const S!int, 1 arg:");
59
  foreach(s; s2)
60-
    writeln(s);
60+
    writeln(*s);
61
    
62
  writeln("const S!int, 2 args:");
63
  foreach(i, s; s2)
64-
    writefln("%s: %s", i, s);
64+
    writefln("%s: %s", i, *s);
65
}