728x90
반응형

아래처럼 typedef는 템플릿화를 지원하지 않지만 별칭 선언은 지원한다.

template <typename T> // MyAllocList<T>::type은 std::list<T, MyAlloc<T>>와 동의어이다.
struct MyAllocList 
{ 
    typedef std::list<T, MyAlloc<T>> type;    
};
 
MyAllocList<Widget>::type lw; // 클라이언트 코드
 
// 별칭 템플릿은 훨씬 더 간단하고, 직접적으로 표현할 수 있다.
template <typename T> // MyAllocList<T>::type은 std::list<T, MyAlloc<T>>와 동의어이다.
using MyAllocList = std::list<T, MyAlloc<T>>;

MyAllocList<Widget> lw; // 클라이언트 코드

또 별칭 템플릿에서는 "::type" 접미어를 붙일 필요가 없다.

그래서 C++11의 모든 타입 변환에 대한 별칭 템플릿 버전들을 C++14에 포함시켰다.

728x90
반응형