Hi!

I'm trying to wrap my mind around "shared", and I think I have managed to more or less grasp it. However I'm having a problem, and it seems it's just a missing feature (or rather combination of features) in the language (or I haven't found the right keyword combination).

Is there any way to create a shared instance of an anonymous class? Let's say:

```
class C {
        shared this() { }
}

void main() {
        shared C c = new /* shared */ C {
                shared this() {
                        super();
                }
        });
}
```

This doesn't compile because, of course, the instantiation of the anonymous class is not shared.

However, the following code doesn't compile either, and I'm not even sure what "shared" is supposed to mean in this context:

```
class C {
        shared this() { }
}

void main() {
        shared C c = new shared(C) {
                shared this() {
                        super();
                }
        });
}
```

I tried playing a bit around [1] (the non-shared constructors are needed), and ended up even more confused than before!!

Of course if I create a proper named class D, I can instantiate shared instances of D, so it's not like there's no workaround... still, coming from Java I like anonymous classes, and I think it'd be cool to be able to use them in this context.

If somebody knows how this works / is supposed to work, I'd be thankful!

[1]: https://dpaste.dzfl.pl/ce2ba93111a0

Reply via email to