인프런 커뮤니티 질문&답변

namopp님의 프로필 이미지
namopp

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

TypeCast

템플릿 문법적인 질문입니다

작성

·

341

2

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

위와 같은 내용에서 typename 이 TypeAt 앞에 선언된 이유가 무엇인지 알 수 있을까요?

답변 1

7

Rookiss님의 프로필 이미지
Rookiss
지식공유자

A name used in a template declaration or definition and that is dependent on a template-parameter is assumed not to name a type unless the applicable name lookup finds a type name or the name is qualified by the keyword typename.

요약하면, TypeAt<TypeList<Tail...>, index-1>::Result; 라고만 하면
이 Result가 타입을 의미하는건지, 아니면 값(멤버 변수)인지 컴파일러가 알지 못해 애매함이 생깁니다.
이런 모호함을 없애기 위해 표준에서 템플릿 인자에 의존적인 이름은
기본적으로 '타입'이 아닌 '값'으로 판정을 하고,
원래 의도가 타입을 지정하는거였다면
앞에다가 typename을 붙이게 되어 있습니다.

namopp님의 프로필 이미지
namopp

작성한 질문수

질문하기