42. typename의 두가지 의미를 제대로 파악하자
Posted 2012. 10. 19. 14:40아래의 두 템플릿 선언문에 쓰인 class와 typename의 차이점은 무엇일까?
template<class T> class Widget;
templat<typename T> class Widget
이 둘은 차이가 없다. 템플릿의 타입 매개변수를 선언 할 때는
class와 typename의 뜻이 완전히 똑같다.
하지만 중첩 의존 타입 이름을 식별하는 용도에는 반드시 typename을 사용 한다.
단, 중첩 의존 이름이 기본 클래스 리스트에 있거나 멤버 초기화 리스트 내의 기본 클래스 식별자로 있
는 경우는 예외이다.
template<typename C> // typename 쓸수있음(class와 같은 의미)
void f( const C& container, // typename 쓰면 안됨
typename C::iterator iter ); // typename 꼭 써야함.
'BOOK > Effective C++ 3판' 카테고리의 다른 글
43. 템플릿으로 만들어진 기본 클래스 안의 이름에 접근하는 방법을 알아 두자 (0) | 2012.10.19 |
---|---|
41. 템플릿 프로그래밍의 천릿길도 암시적 인터페이스와 컴파일 타입 다형성부터 (0) | 2012.10.19 |
33. 상속된 이름을 숨기는 일을 피하자 (0) | 2012.10.19 |
32. public 상속 모형은 반드시 is a(...는 ...의 일종이다)를 따르도록 하자 (0) | 2012.10.19 |
30. 인라인 함수는 미주알고주알 따져서 이해해 두자 (0) | 2012.10.19 |
- Filed under : BOOK/Effective C++ 3판