struct Unshared(T)
{
    private T value;
    T get() shared { return cast(T)value; }
    alias get this;
    void opAssign(T v) shared { value=cast(shared)v; }
}

shared synchronized class A
{
    private Unshared!(int[]) a;
    int[] f()
    {
        return a;
    }
}

Reply via email to