template 용어 정리


template < typename T>

inline const& T max(const& T a, const& T b)

{   return a < b ? b : a; }

 


1) template parameter template arguments.

 아래와 같은 function templates 이 있을 때,

< typename T > 의 T 는 template parameter 라고 표현하고 T를 대치 하는 실제 타입을 template argument 라고 함.

 – change(1);   -> template parameter : T, template argument : int


 

    template < typename T>

    void change(T& a, T& b){..}

 



2) template  함수의 인자 a, b 는 call parameter ( 호출 파라미터 ) 라고 부른다.

 

     inline const& T max(const& T a, const& T b)

 


2) template 코드 작 성 시에 정의 되지 않고 남은 요소( T )를 parameterized ( 파라미터화 ) 됐다고 표현 함.

3) template instantiation ( 템플릿 인스턴스화 ) 와 specialization (특수화 )

     – template parameter 를 실제 값으로 치환해 템플릿을 일반 클래스, 함수, 멤버 함수로 생성하는 과정

     – 위의 인스턴스화의 결과로 생성된 실체(코드 덩어리) 를 일반적으로 특수화( specialization ) 라고 함.

     

    max( 7, 10 );      -> max ( const& int    a, const& int    b)  로 특수화

    max( 7.0, 10.1 );  -> max ( const& double a, const& double b)  로 특수화