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.