On Wednesday, 6 August 2014 at 14:38:34 UTC, Marc Schütz wrote:
On Wednesday, 6 August 2014 at 13:15:27 UTC, Kozzi11 wrote:
AFAIK there is no easy way to do it. Maybe it would be fine to add some function to phobos. Something like this:


auto initAA(VT,KT)() {

        static struct Entry
        {
                Entry *next;
                size_t hash;
        }
        
        static struct Impl
        {
                Entry*[] buckets;
                size_t nodes;
                TypeInfo _keyti;
                Entry*[4] binit;
                
@property const(TypeInfo) keyti() const @safe pure nothrow @nogc
                { return _keyti; }
        }

        static struct AA
        {
                Impl* impl;
        }

        VT[KT] aaa;
        AA* aa = cast(AA*)&aaa;
        if (aa.impl is null)
        {   aa.impl = new Impl();
                aa.impl.buckets = aa.impl.binit[];
        }
        aa.impl._keyti = cast() typeid(aaa);
        return aaa;
}


Or it would be fine if I could write something like this: auto aa = new VT[KT]();

`string[string] aa = [];` would be fine, too, but it currently doesn't compile.

Thanks for your clarification (and also in the other thread), so this is an implementation issue for builtin AAs.

Reply via email to