A question about Typedef usage:
Say, I have the following circumstances

/// --- code --- ///

import std.typecons;

void main()
{
        MyEA ea;
        MyEB eb;
        ea.tarr.length = 5;
        static assert(!is(MyEA == MyEB));
        static assert(!is(MyEA == E));
        static assert(!is(MyEB == E));
        assert(ea.tarr.length == eb.tarr.length); // line 11
        assert(ea.tarr.length != eb.tarr.length); // line 12
}

struct T
{
        size_t i;
}

struct E
{
        size_t i;
        static T[] tarr;
}

alias MyEA = Typedef!(E, E.init, "A"); // line 26
alias MyEB = Typedef!(E, E.init, "B"); // line 27

/// --- code ends --- ///

Line 12 yields an assertion error, while line 11 does not.
This tells me, that despite the fact the types MyEA and MyEB are different they still share the static array, which would contradict the definition of static.

I suppose, the tricky thing is to tweak the init property of the typedefs in lines 26/27 to avoid this clash. How to manage this?

Reply via email to