본문 바로가기
C,C++/Error & Warning

[C++] typename 키워드 | C2760, C7510

by woohyeon 2019. 11. 25.
반응형

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




댓글