import std.meta;
static assert(AliasSeq!().stringof == "()");
static assert(AliasSeq!(1).stringof == "tuple(1)");
static assert(AliasSeq!(1,2).stringof == "tuple(1, 2)");
static assert(AliasSeq!(int).stringof == "(int)");
static assert(AliasSeq!(int, int).stringof == "(int, int)");
static assert(AliasSeq!(int, 2).stringof == "tuple((int), 2)");
static assert(AliasSeq!(int, 2, int, int).stringof == "tuple((int), 2, (int), (int))");
As we can see above, CT sequences containing at least one value has a "tuple" prefix, while others don't. Not only that, but mixed sequences wrap every type in (brackets).
Comment #1 by robert.schadek — 2024-12-13T19:04:54Z