ariável estática dentro da função templa

Em C ++, se você definir esta função no header.hpp

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

e você inclui header.hpp em pelo menos dois arquivos .cpp. Então você terámultiple definition of incAndShow(). O que é esperado. No entanto, se você adicionar um modelo à função

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

então você não terá nenhummultiple definition of erro. Da mesma forma, dois .cpp diferentes chamando a função com o mesmo modelo (por exemplo,incAndShow<int>()), Vai compartilharmyStaticVar. Isso é normal? Estou fazendo essa pergunta, porque confio nesse "recurso" (compartilhando a variável estática) e quero ter certeza de que não é apenas minha implementação que está fazendo isso.

questionAnswers(14)

yourAnswerToTheQuestion