C,C++/Error & Warning
[C++] typename 키워드 | C2760, C7510
woohyeon
2019. 11. 25. 19:38
반응형
typename 키워드
- 템플릿 정의에서 알 수 없는 식별자가 형식(Type)이라는 것을 컴파일러에게 알려줍니다.
- 템플릿의 타입 매개변수로 정의된 타입을 사용하는 선언문을 정규화하는데 사용합니다.
template <class T>
void func(const T& obj)
{
T::size_type _size;
}
위 코드는 아래와 같은 컴파일 에러를 발생시킵니다.

예를 들어 string 타입을 인자로 전달할 경우 string::size_type 타입을 사용하려는 의도이지만
T의 타입은 컴파일 과정에서 해당 함수 호출 시점에서 정해지기 때문에 미리 컴파일러에게 T::size_type이 타입이라는 것을
알려주어야 합니다.
따라서 아래와 같이 사용하면 typename 키워드와 함께 사용하면 정상적으로 컴파일이 됩니다.
template <class T>
void func(const T& obj)
{
typename T::size_type _size;
}
참고)
https://docs.microsoft.com/ko-kr/cpp/cpp/typename?view=vs-2019