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).
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/dmd/issues/19608 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB