int x = 2;
decltype (x) y = 3; //여기서 y는 int가 된다.
cout << y;
- decltype의 자료형은 int가된다. x가 int이기 때문에
- int y = 3과 동일하다
decltype (x + y) z = x + y; //2 + 3인 5를 갖게되고 자료형은 x + y와 동일한 타입이다.
template<class T1, class T2>
void test(T1 x, T2 y)
{
decltype (x + y) xpy = x + y;
}
템플릿 안에서도 사용 가능하다.
template<class T1, class T2>
auto test(T1 x, T2 y) -> decltype (x + y)
{
return x + y;
}
int main()
{
cout << typeid(test(1.5f, 2.78)).name();
return 0;
}
결과 값
double
이와 같이 템플릿에서 decltype을 활용하여 float와 double의 애매한 리턴타입을 auto로 잡아줄 수 있게 된다.
'C++ > Basic' 카테고리의 다른 글
[C++] mutable 사용법 (0) | 2021.06.16 |
---|---|
[C++] extern의 사용법 (0) | 2021.06.16 |
[C++] template 사용법 (0) | 2021.06.10 |
[C++] 함수의 디폴트 매개변수 (0) | 2021.06.09 |
[C++] inline함수와 define의 차이 (0) | 2021.06.08 |