On Wednesday, 23 September 2015 at 05:56:08 UTC, Enjoys Math wrote:
What I HAD TO do to get it to compile:

programResultsQ = heapify!(compareResults, Array!(Results!(O,I)))(Array!(Results!(O,I))([Results!(O,I)()]), 1);
programResultsQ.popFront();

What running it says:

AssertionFailure at line 381 of std.container.array.d, which looks like:

/**
Constructor taking a number of items
     */
    this(U)(U[] values...) if (isImplicitlyConvertible!(U, T))
    {
        import std.conv : emplace;
        auto p = cast(T*) malloc(T.sizeof * values.length);
        static if (hasIndirections!T)
        {
            if (p)
                GC.addRange(p, T.sizeof * values.length);
        }

        foreach (i, e; values)
        {
            emplace(p + i, e);
            assert(p[i] == e);     /* THIS IS LINE 381 */
        }
        _data = Data(p[0 .. values.length]);
    }

Any ideas. How can I improve this declaration? Using Phobos sometimes is such a mystery.

I mean initialization...

Here's the corresponding declaration:

alias ProgramResultsQueue(O,I) = BinaryHeap!(Array!(Results!(O,I)), compareResults); /* module scope */

ProgramResultsQueue!(O,I) programResultsQ;   /* class member */

The intialization line occurs in the class's ctor.

Reply via email to