[c++]Typename

C++/Tips / / 2021. 1. 26. 15:21

=> Template 정의에서 알 수 없는 식별자가 형식인 것을 compiler에게 힌트를 제공하는 것

=> 사람은 이해할 수 있으나, 컴퓨터에게 모호한 경우 사용

 

1. 사용

=> 기본적으로 typename은 class와 동일하게 사용함[template의 type 매개변수 선언시]

template<typename T> class Map;
template<class T> class Map;
//두개가 동일

=> But, 다른 경우 두경우가 존재함

 

2. 차이

2-1. template의 template를 설정하는 경우

template<template<typename,typename> class Container, typename type>

=> 이경우에는 Class를 반드시 사용해주어야함. 그렇지 않으면 typename과 헷갈려하는 경우가 발생

 

2-2. 의존 타입의 경우

template<typename T>
class A
{
	typedef typename T::bring T2;
};

=> 템플릿 매개변수에 종속된 것을 말함

=> C++에 따르면 typename이 붙지 않은 거은 무조건 변수나 함수로 간주

=> typename을 붙이면 뒤에 붙는 식별자가 type 이라는 것을 명시함

=> T가 T::bring의 타입이라는 것을 확실히 정의

'C++ > Tips' 카테고리의 다른 글

[c++]SmartPointer  (0) 2021.02.02
[c++] struct  (0) 2021.01.26
[c++]auto  (0) 2021.01.19
[c++]volatile  (0) 2021.01.12
[C++] Extern  (0) 2021.01.05
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기