¿Por qué esta función de plantilla no se comporta como se esperaba?

Estaba leyendo sobre las funciones de plantilla y me confundí con este problema: #include <iostream> void f(int) { std::cout << "f(int)\n"; } template<typename T> void g(T val) { std::cout << typeid(val).name() << " "; f(val); } void f(double) { std::cout...