module buggshared; class A { shared static this() { supported["foo"] = "bar"; } __gshared string[string] supported; } This builds, which means that__gshared in a class scope implies static? That doesn't seem like a good idea. I didn't find where that's documented either.
Makes sense to me. How can a class member be __gshared without being static?
Static means there's a single instance. Shared simply means more than one thread has visibility to it. Two very different properties. Neither implies the other.
From attributes.html: "__gshared may also be applied to member variables and local variables. In these cases, __gshared is equivalent to static, except that the variable is shared by all threads rather than being thread local."