Статическая переменная внутри шаблонной функции
В 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
, Это нормально? Я задаю этот вопрос, потому что я полагаюсь на эту «особенность» (разделяя статическую переменную) и хочу быть уверенным, что это делает не только моя реализация.