이번 항목은 typename 에 대해서다, 그냥 알고만 있어도 바로 써먹을 수 있으니, 빠르게 정리하고 넘어가도록 한다.

1. typename의 역활은 무엇인가?

① typename은 템플릿 매개변수의 이름을 정할 때, 사용 된다.
② typename은 템플릿 매개변수로 인한 의존적인 타입을 타입으로 사용할 때, 사용 된다.

① 은 쉽게 이해 하겠지만, ②은 가물 가물 할것이다. 질문 2에서 예제와 함게 설명 한다.


2. 아래 코드의 문제점은 무엇인가?

... MSVC 2005 에선 문제가 없다. 표준을 따른다는 전제하에서 이야기를 하자면, operator() 의 매개변수 instantaited_type가 정확하게 추론을 할 수 없게 된다.

그 이유는 instantaited_type의 이름이 X_base<B>에 의존적이기 때문에, X_base<B>을 알기 전까진 모호성이 생긴다.모호성은 다음과 같다.

  1. instantaited_type 가 static 멤버 변수 일 수 있다.
  2. instantaited_type 가 함수 일 수 있다.
  3. instantaited_type 가 타입일 수 있다.


이 모호성은 어떻게 해결 하는가?

특정 키워드를 이용하여, 컴파일러에게 말해 주면된다. 그 키워드가 바로 typename 이다.

다음 예제코드를 보고 확실히 익히자.


총평

음!


신고
posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요