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

카테고리

전체목록 (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

'템플릿'에 해당되는 글 1건

  1. 2010.06.17 인자추론

인자추론

Study/Template / 2010.06.17 14:19

template <typename T1, typename T2>
inline T1 max(T1 const& a, T2 const& b)
{
 return a < b? b:a;
};

위의 함수는 간단히 큰 함수를 반환하는 함수이다.
이를 사용할때 조심해야 할 부분이 있다.
max(2,2,7); 을 사용하게 되면
분명 큰 수는 2.7이지만 반환값은 2가 된다.
그 이유는 반환값이 T1으로 되어있기 때문이다.
그렇다고 반환값을 T2로 할수도 없다.

이를 위한 해결로 아래와 같이 인자를 세개를 받도록 한다.
template <typename RT, typename T1, typename T2>
inline RT max(T1 const& a, T2 const& b)
{
 return a < b? b:a;
};

첫번째 인자로 반환자료형을 받는데 첫번째 인자로 둔 이유는 간단하다.
인자추론을 사용하여 사용시 간편하게 하기 위해서이다.
만약 RT가 마지막 인자라면 아래와 같이 사용해야 한다.
max<int, double, double>(2, 2.7)
하지만 RT가 첫번째 인자라면 인자추론에 의해 2와 2.7의 데이터형은 알아서 결정해 준다.
max<double>(2, 2.7)
인자추론을 적극활용하자.

'Study > Template' 카테고리의 다른 글

데이터형이 아닌 클래스 템플릿 파라미터  (2) 2010.06.25
기본 템플릿 인자  (0) 2010.06.25
클래스 템플릿 특수화  (0) 2010.06.24
클래스 템플릿  (0) 2010.06.18
오버로딩 (함수 템플릿)  (0) 2010.06.17
인자추론  (0) 2010.06.17
Posted by 붕대마음

댓글을 달아 주세요

최근에 달린 댓글

최근에 받은 트랙백

글 보관함