On Saturday, 10 March 2018 at 09:47:55 UTC, Nordlöw wrote:
Now that we have `static foreach` I just realized we can start...

My recent definition now looks like

template allSameTypeIterative(V...)
// TODO restrict `V` to types only
{
    static if (V.length <= 1)
    {
        enum allSameTypeIterative = true;
    }
    else
    {
        static foreach (Vi; V[1 .. $])
        {
static if (!is(typeof(allSameTypeIterative) == bool) && // not yet defined !is(V[0] == Vi)) // 10% faster than `!isSame(V[0], Vi)`
            {
                enum allSameTypeIterative = false;
            }
        }
static if (!is(typeof(allSameTypeIterative) == bool)) // if not yet defined
        {
            enum allSameTypeIterative = true;
        }
    }
}

Is there a way to break the `static foreach` loop prematurely as quickly as `allSameTypeIterative` becomes false?

Reply via email to