On Friday, 9 March 2018 at 19:24:03 UTC, Nordlöw wrote:
I'm looking for a function (that probably should be placed in std.meta) named something like `areEqual` that checks whether all it's arguments are equal or not.

Is there such as function already in Phobos?

My usage is

static if (allEqual!(staticMap!(ElementEncodingType, Rs)))
{
    // compare Rs byCodeUnit
}

My current own implementation is

/** Returns: true iff all values $(D V) are the same.
See also: http://forum.dlang.org/post/iflpslqgrixdjwrlq...@forum.dlang.org See also: http://forum.dlang.org/post/mheumktihihfsxxxa...@forum.dlang.org
*/
template allSame(V ...)
    if (isExpressions!V)
{
    static if (V.length <= 1)
    {
        enum allSame = true;
    }
    else static if (V.length & 1)
    {
        enum allSame = (V[$ - 1] == V[0] &&
                        V[0 .. $/2] == V[$/2 .. $-1] &&
                        allSame!(V[0 .. $/2]));
    }
    else
    {
        enum allSame = (V[0 .. $/2] == V[$/2 .. $] &&
                        allSame!(V[0 .. $/2]));
    }
}

Should this go into std.meta?

Reply via email to