On Saturday, 20 June 2026 at 14:43:56 UTC, Mindy (0xEAB) wrote:
Those are function calls, hence IFTI[0] applies.
In your original example, however, the template is used as an alias.

Hmm, I see the difference now, thanks.

Still. Nick suggested a library-side fix above: to separate, on the template level, the first argument of `format` from the other arguments. If this separation works, the next logical steps seem to be:

1. Do this to every library function for better flexibility.

2. Better, on the compiler side, do a lowering of every multi-argument template into a chain of nested single-argument templates.

3. Better still, on the compiler side, support something IFTI-like for aliases.

But it didn't happen. So I guess I'm missing some rationale here. Perhaps it's something about when each template is instantiated, and the instantiation cannot be postponed in the general case?..

Just, the original example, where `map!format` fails but `map!(x=>format(x))` works, still seems like an arbitrary quirk to me.

Ivan Kazmenko.

Reply via email to