Discussion Thread: DIP 1036--String Interpolation Tuple Literals--Community Review Round 2
Adam D. Ruppe
destructionator at gmail.com
Fri Jan 29 04:47:41 UTC 2021
On Friday, 29 January 2021 at 04:25:54 UTC, Walter Bright wrote:
> Interesting, but it's really writing your own printf, and one
> that doesn't accept any format modifiers.
It is trivial to accept format modifiers here too, his example
just generated them from type info because you can.
It could just as well be
printf(i"%s${item} %02d${other_item}");
which expands to the inlinable call
printf("%s %02d", item, other_item);
by means of simple metaprogramming (you concat the strings at
compile time - no runtime cost, it reduces to an eponymous
template with an enum string - then build the call out of the
remaining filtered tuple).
You can even do a CTFE scan of the string if you like and see
that there's a % already and use it, or there isn't one and
insert one.
While this is an overload to do the CTFE manipulations, they are
indeed CTFE manipulations and thus have no runtime footprint; it
reduces to an inlined call to the original thing. Same assembly.
D excels at these things.
More information about the Digitalmars-d
mailing list