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.