Variable estática dentro de la función de plantilla

En C ++, si define esta función en header.hpp

void incAndShow()
{
  static int myStaticVar = 0;
  std::cout << ++myStaticVar << " " << std::endl;
}

e incluye header.hpp en al menos dos archivos .cpp. Entonces tendrásmultiple definition of incAndShow(). Lo cual se espera. Sin embargo, si agrega una plantilla a la función

template <class T>
void incAndShow()
{
  static int myStaticVar = 0;
  std::cout << ++myStaticVar << " " << std::endl;
}

entonces no tendrás ningunamultiple definition of error. Del mismo modo, dos .cpp diferentes que llaman a la función con la misma plantilla (por ejemplo,incAndShow<int>()), Va a compartirmyStaticVar. ¿Esto es normal? Estoy haciendo esta pregunta, porque confío en esta "característica" (compartir la variable estática) y quiero estar seguro de que no es solo mi implementación la que está haciendo esto.