xxxxxxxxxx
import std.stdio;
import std.meta;
auto fmt(alias s, alias a)() {
import std.string: replace;
import std.conv: to;
immutable id = '$' ~ __traits(identifier, a);
return s.replace(id, a.to!string);
}
template fmt(alias s, Args...) {
auto fmt() {
string s2 = s;
foreach (alias m; AliasSeq!Args) {
s2 = fmt!(Alias!s2, m);
}
return s2;
}
}
void main() {
int a = 1;
int b = 2;
int c = 3;
writeln(fmt!("a = $a", a));
writeln(fmt!("a = $a, b = $b", a, b));
writeln(fmt!("a = $a, b = $b, c = $c", a, b, c));
}