언제 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>와 같은 선언이 필요하다는 것을 잊지말자.
'스터디 > C++' 카테고리의 다른 글
[ C++ ] Stack Unwinding(스택 풀기) (0) | 2019.12.02 |
---|---|
[ C++ ] 예외처리 메커니즘( try, catch, throw ) 총 정리 (0) | 2019.12.02 |
[ C++ ] 함수 템플릿, 클래스 템플릿과 static (0) | 2019.12.01 |
[ C++ ] 템플릿 매개변수와 디폴트 값(default value) (0) | 2019.12.01 |
[ C++ ] 클래스 템플릿의 특수화( Class Template Specialization ) (0) | 2019.12.01 |