template <typename T>
void ShowStaticValue(void)
{
static T num = 0;
num += 1;
cout << num <, " ";
}
함수 템플릿 내에 지역변수 num이 static으로 선언되었다. 그런데 위의 ‘함수 템플릿’을 기반으로 컴파일러는 다음과 같이 ‘템플릿 함수’들을 만들어 낸다.
void ShowStaticValue<int>(void)
{
static int num = 0;
}
void ShowStaticValue<long>(void)
{
static long num = 0;
}
따라서 static 지역변수도 템플릿 함수 별로 각각 존재하게 된다.
위와 같다.
지금쯤이면 알 듯? = 템플리스이 일부 또는 전부를 저으이하고 잇다는 사실을 컴파일러에게 알려야한다.
T SimpleStaticMem<T>::mem = 0;
SImpleStaticMem<int> 의 mem 도 0으로 초기화되고 long 도 초기화 된다.