tempname 5월13일 4:06:20
모던 C++ 기준으로는 아주 사소한 차이 외에는 차이가 없습니다.
https://stackoverflow.com/questions/2023977/what-is-the-difference-between-typename-and-class-template-parameters의 내용을 인용하였습니다.
1. 템플릿 템플릿 파라미터를 전달할 때 (until C++ 17, 다만 g++ 10.5 버전 기준으로 std=c++98 옵션을 부여해도 컴파일 가능)
예시 코드
template <template <typename, typename> class C, typename T> // C 앞의 class는 typename으로 치환 불가
struct Container {
C<T, std::allocator<T>> container_;
};
int main()
{
Container<std::vector, int> c {};
}
2. class 템플릿을 명시적으로 인스턴스화 할 때
template class Foo<int>;
참고로, 예시로 드신 template <typename T>와 template <class T>는 실제로 아무런 차이가 없습니다. |