On Saturday, 20 June 2026 at 10:28:24 UTC, Ivan Kazmenko wrote:
void main ()
{
        auto a = [1, 2, 3];
        auto b = a.map !(x => format !("%d") (x));  // ok
        auto c = a.map !(format !("%d"));  // orphan format specifier
}
```

Why the line with `b` compiles, but the line with `c` does not?
Shouldn't the compiler deduce the type for the format argument as a.front?

The signature is:
```d
typeof(fmt) format(alias fmt, Args...)(Args args);
```

https://dlang.org/phobos/std_format.html#format

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) { ... }
}
```

Perhaps file an issue:
https://github.com/dlang/phobos/issues

Reply via email to