On 1/11/18 11:25 PM, Nicholas Wilson wrote:
Is there a way to make __gshared part of an alias?
No, __gshared is a storage class, not a type constructor, so it has no
meaning as part of a type:
__gshared int x;
int y;
static assert(is(typeof(x) == typeof(y)));
as in
enum AddrSpace : uint
{
Private = 0,
Global = 1,
Shared = 2,
Constant = 3,
Generic = 4,
}
struct Variable(AddrSpace as, T)
{
T val;
alias val this;
}
alias Global(T) = __gshared Variable!(AddrSpace.Global, T);
dmd famously doesn't complain about attributes that do nothing, as in
this case.
-Steve