| /* |
| TEST_OUTPUT: |
| --- |
| fail_compilation/fail3672.d(28): Error: read-modify-write operations are not allowed for `shared` variables |
| fail_compilation/fail3672.d(28): Use `core.atomic.atomicOp!"+="(*p, 1)` instead |
| fail_compilation/fail3672.d(32): Error: none of the `opOpAssign` overloads of `SF` are callable for `*sfp` of type `shared(SF)` |
| --- |
| */ |
| |
| struct SF // should fail |
| { |
| void opOpAssign(string op, T)(T rhs) |
| { |
| } |
| } |
| |
| struct SK // ok |
| { |
| void opOpAssign(string op, T)(T rhs) shared |
| { |
| } |
| } |
| |
| void main() |
| { |
| shared int x; |
| auto p = &x; |
| *p += 1; // fail |
| |
| shared SF sf; |
| auto sfp = &sf; |
| *sfp += 1; // fail |
| |
| shared SK sk; |
| auto skp = &sk; |
| sk += 1; // ok |
| *skp += 1; // ok |
| } |