the type you want to stringize
in case of a template, what's the deperator between types
in case of a template, what token marks the beginnig of the template arguments
in case of a template, what token marks the end of the template arguments
template A(T...) {} struct B {} struct C {} alias T = A!(A!(B, C)); assert(StringOf!T == "A!(A!(B, C))"); struct S(T) {} assert(StringOf!(S!int) == "S!(int)"); assert(StringOf!(A!(A!(B, S!int))) == "A!(A!(B, S!(int)))"); assert(StringOf!int == "int"); assert(StringOf!3 == "3"); void f(int a, int b) {} import std.algorithm: canFind; assert(StringOf!(f).canFind("void(int a, int b)")); assert(StringOf!void == "void");
- https://forum.dlang.org/post/iodgpllgtcefcncoghri@forum.dlang.org
Returns a stringof another template with it's real and non-mangled types
You may also customize the format in the case of templates: