블로그 이미지
자신의 단점을 메꾸는 것을 단(鍛)이라 하고 자신의 강점을 갈고 닦는 것을 련(鍊)이라 하여, 두가지를 합친 것을 단련이라고 부른다. 붕대마음

카테고리

전체목록 (666)
참고사이트 (8)
Goal (4)
Travel (10)
My Life (104)
Game (35)
Game Review (7)
Game Plan (0)
Books (5)
English (1)
Optimizing (12)
Study (218)
유용한 것들_etc (44)
유용한 것들_func (20)
Unity (48)
Unreal (87)
작업장 (54)
RenderMonkey (6)
정리요망 (1)
따라잡기 시리즈 (0)
링크용 (0)
Total343,311
Today3
Yesterday91
인자로 넘겨받는 것이 반드시 데이터형일 필요는 없다.
아래와 같이 일반적인 값을 입력받아도 되고, 이전글처럼 디폴트값도 지정해 줄 수 있다.


// 스택크기를 사용자로부터 입력받는다.
template <typename T, int MAXSIZE = 20>
class Stack

클래스 템플릿 뿐 아니라 함수 템플릿에서도 사용이 가능하다
template<typename T, int VAL>
T addValue(T const& elem)
{
    return elem + VAL;
}

이런 종류의 함수는 파라미터로서 많이 사용된다.
std::transform(soruce.begin(), source.end(), dest.begin(), addValue<int,5>);

함수템플릿 인스턴스는 오버로딩 함수들의 집합에 대한 이름일 뿐이며
현재표준에 따르면 오버로딩함수들의 집합은 템플릿 파라미터추론에 사용될 수 없다.
따라서 함수 템플릿 인자를 정확한 데이터형으로 반환해야만 한다.
std::transform(soruce.begin(), source.end(), dest.begin(), (int(*)(int const&))addValue<int,5>);

데이터형이 아닌 템플릿 파라미터는 몇가지 제약을 가진다.
정수상수형값(또는 enum값) 이거나 외부링크를 가진 객체에 대한 포인터야 한다는 것이다.

template <typename T, double MAXSIZE = 20.3>
error C2993: 'double' : 비형식 템플릿 매개 변수 'MAXSIZE'과(와) 맞지 않는 형식입니다.

Posted by 붕대마음

댓글을 달아 주세요

  1. 2010.06.30 19:45 kwangchul  댓글주소  수정/삭제  댓글쓰기

    머야 이 템플릿 러쉬는-0-

최근에 달린 댓글

최근에 받은 트랙백

글 보관함