On Tuesday, 14 August 2018 at 13:42:04 UTC, Andrey wrote:
Hello,
I have a enum:

enum Type : string
{
    One = "Q1",
    Two = "W2",
    Three = "R3"
}

I want to concat it in compile-time:

enum result = doConcat!Type();

And get this result:

writeln(result); // output: "Q1 W2 R3"

Delimiter here is space symbol.
How do do it?

Here's one version:

template StringEnumValues(alias Enum)
{
    import std.traits : EnumMembers;
    string[] StringEnumValues()
    {
        string[] enumValues;
        static foreach (member; EnumMembers!Enum)
            enumValues ~= member;
        return enumValues;
    }
}

import std.string : join;
pragma(msg, StringEnumValues!Type.join(" "));

Reply via email to