본문 바로가기
스터디/C++

[ C++ ] template<typename T>과 template<>

by 알 수 없는 사용자 2019. 12. 1.

언제 template<typename T>를 선언해야하고

언제 template<>을 선언해야 할까?

 

템플릿을 정의할 때는 template<typename T> 또는 template<>와 같은 선언을 둬서 템플릿의 일부 또는 전부를 정의하고 있다는 사실을 컴파일러에게 알려야 한다.

 

그럼 template<typename T>의 선언이 필요한 경우롸 template<>의 선언이 필요한 경우를 구분하면 된다.

 

초반에 템플릿을 공부할 때는 많이 헷갈렸는데 결론은 간단하다.

정의 부분에 T가 존재하면 <typename T>를 선언하고 T, T1, T2와 같은 문자가 존재하지 않으면 <>를 선언하면 된다.

 

template<typename T>
class Temp
{
private:
	T num;
};

//---------------------

template<>
class Temp<int>
{
private:
	int num;
};

 

주의할 점은 부분 특수화를 할 경우인데, 문자가 있기때문에 <typename T>와 같은 선언이 필요하다는 것을 잊지말자.