On Friday, 1 July 2016 at 23:26:19 UTC, Hiemlick Hiemlicker wrote:
On Friday, 1 July 2016 at 23:03:17 UTC, Basile B. wrote:
On Friday, 1 July 2016 at 22:47:21 UTC, Hiemlick Hiemlicker wrote:
Ok, Does that mean


void main()
{
    static struct Foo{}
      foo();
}

void foo()
{
   Foo f;
}

works?

No.

An example usage is for the singleton pattern:

    T singletonViaFactory(T, A...)(A a)
    if (is(T == class))
    {
        static T instance;
        if (instance)
            return instance;
        else
            return new T(a);
    }

"instance" is well a global variable and not a local, but it's hidden from the outside world.

Also, then how do I declare a struct to be "global" so that it can be common to all threads? Do I have to declare _gshared for each element of the struct?

no, just put __gshared before the variable declaration, not for each member:

    struct Foo
    {
        int i;
    }

    __gshared Foo foo;

is fine.

Reply via email to