Reducing variadic template combinatorics (C++ was onto something)
monkyyy
crazymonkyyy at gmail.com
Tue Oct 14 18:54:47 UTC 2025
On Tuesday, 14 October 2025 at 15:29:04 UTC, Paul Backus wrote:
> On Tuesday, 14 October 2025 at 04:30:49 UTC, Steven
> Schveighoffer wrote:
>> But... I still want to write `writelines(1, 2, 3, 4)`. The
>> ergonomics there are nice! Is there some way we can capture
>> this same reduction in complexity while still keeping the nice
>> syntax?
>
> The answer to this, of course, is Lisp-style AST macros. You
> write some code that describes the AST transformation from
> `writelines(1, 2, 3, 4);` to `writeln(1); writeln(2);
> writeln(3); writeln(4);`, and the compiler executes this code
> at compile time and replaces the original AST with the result.
> Because the macro is totally ephemeral, it does not need to
> have space allocated for each expansion in the template cache,
> nor a unique name generated for the symbol table, nor time
> spent inlining the wrapper functions during optimization (or
> failing to), nor time spent during codegen and linking to
> process those wrapper functions.
>
> Since D will never have AST macros, we are condemned for
> eternity to suffer from either template bloat or awkward syntax.
d has "ephemeral" compile time execution, I just dont know how
much is deleted.
More information about the Digitalmars-d
mailing list