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