On Saturday, 20 June 2026 at 12:10:47 UTC, Nick Treleaven wrote:
You only provided the `fmt` template argument, so `Args` is inferred as an empty sequence. Your code could be supported if `format` was changed to:
```d
template format(alias fmt)
{
  typeof(fmt) format(Args...)(Args args) { ... }
}
```

Hmm, but in other places, function calls do support partial ctargs specification.
Consider this example:

```
int fun (T1, T2) (T1 x, T2 y)
{
        return x + y;
}

int gun (T1, Args...) (T1 x, Args args)
{
        return x + args[0];
}

void main ()
{
        auto a = fun !(int) (5, 7);
        auto b = gun !(int) (5, 7);
        import std.stdio : writeln;
        writeln (a, " ", b); // 12 12
}
```

This does work, not only for `fun` with exactly one additional argument, but also for `gun` with variable number of additional arguments. What is the difference of this case with the `map+format` case in the original question?

Ivan Kazmenko.

Reply via email to