Статическая переменная внутри шаблонной функции

В C ++, если вы определите эту функцию в header.hpp

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

и вы включаете header.hpp как минимум в два файла .cpp. Тогда у вас будетmultiple definition of incAndShow(), Что ожидается. Однако, если вы добавите шаблон в функцию

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

тогда у тебя не будетmultiple definition of ошибка. Аналогично, два разных .cpp вызывают функцию с одним и тем же шаблоном (например,incAndShow<int>()), будет делитьсяmyStaticVar, Это нормально? Я задаю этот вопрос, потому что я полагаюсь на эту «особенность» (разделяя статическую переменную) и хочу быть уверенным, что это делает не только моя реализация.

Ответы на вопрос(7)

Ваш ответ на вопрос