On 09/13/2018 06:59 PM, ag0aep6g wrote:
On 09/13/2018 03:25 PM, Arafel wrote:
         // How can we update the timestamp? Neither of those work
         timestamp = Clock.currTime;
         timestamp = cast(shared) Clock.currTime;

cast() timestamp = Clock.currTime;

Still not there... it doesn't work with ref parameters (and probably other things, like AAs, or at least nested AAs / arrays):

```
import std.stdio;
import std.datetime.systime;
import core.time;

void foo(ref SysTime t) {
    t += 1.dur!"minutes";
}

shared synchronized class A {
    private SysTime s;

    this() {
        cast ()s = Clock.currTime; // OK, This works
    }

    void foo() {
        writeln("A.foo - Before: ", cast() s);

        // But how to do this??
        //(cast () s).foo;
        //s.foo;

        writeln("A.foo - After: ", cast() s);
    }
}

void main() {

    SysTime s = Clock.currTime;
    writeln("main - Before: ", s);
    s.foo;
    writeln("main - After: ", s);

    shared A a = new shared A;
    a.foo;
}
```

That makes me wonder if casting a lvalue makes sense at all, and how come that the result is not another lvalue... what it is, I don't know, because you can assign to it, but not take a reference.

Reply via email to