템플릿 매개변수를 선언할 때, class 및 typename은 서로 바꾸어 써도 무방하다. 중첩 의존 타입 이름을 식별하는 용도에는 반드시 typename을 사용한다. 단, 중첩 의존 이름이 기본 클래스 리스트에 있거나 멤버 초기화 리스트 내의 기본 클래스 식별자로 있는 경우에는 예외이다. typename의 두 가지 의미 class와 typename은 차이가 없다. template class Widget; template class Widget; 템플릿의 타입 매개변수를 선언할 때는 class와 typename의 뜻이 완전히 똑같다. 하지만 항상 class와 typename이 똑같지 않다. typename을 무조건 사용해야 할 때가 있다. 이 경우가 언제인지를 알아보려면 템플릿 안에서 참조할 수 있는 이..