void f(int x = 0);
будет вызван.Во время разрешения перегрузки не шаблон всегда предпочтительнее шаблона, когда тип аргумента является точным соответствием (т. Е. Не требует преобразований) - см. §13.3.3 / 1.
(обратите внимание, что если не-темплатная перегрузка была вместо void f(long x = 0);
, и место вызова оставалось тем же, или если перегрузка оставалась той же, но вместо места вызова вместо f(5L);
, вместо этого будет вызываться перегрузка шаблона.)