shared: Has anyone used it without a lot of pain?

Atila Neves via Digitalmars-d digitalmars-d at puremagic.com
Tue Apr 4 14:56:37 PDT 2017


I feel dirty if I write `__gshared`. I sneeze when I read it. But 
everytime I try and use `shared` I get trouble for it.

TIL that if I want a struct to be both `shared` and not, 
destructors are out of the way. Because while constructors are 
easy because we can have more than one:

struct Foo {
     this(this T)() { }
}

auto f1 = const Foo();
auto f2 = shared Foo();

There can be only one destructor:


struct Bar {
     this(this T)() { }
     ~this() {} // no shared, if there was the problem would 
reverse
     // ~this(this T)() {} isn't a thing
}

auto b1 = const Bar();
// Error: non-shared method foo.Bar.~this is not callable using a 
shared object
// auto b2 = shared Bar(); //oops

The reason why what I was trying to do isn't possible is obvious 
in hindsight, but it's still annoying. So either code duplication 
or mixins, huh?

Atila




More information about the Digitalmars-d mailing list