Тут обсуждалось что-то вроде
auto foo(T)(T x) {...}
y = ...;
foo(
conv.to(y));
если бы foo() ожидала конкретный тип, было бы ясно (при другом тайпчекере), во что
conv.to должна конвертировать y.
Но т.к. foo это шаблон, никаких конкретных требований к Т не имеющий, компилятор не может знать, во что же конвертировать y.