suffix return type
함수를 만들 때 사용하는 새로운 표기법 (C+11부터 지원)
함수의 이름 앞에 "auto"를 넣고, 괄호 뒤쪽에 -> 반환타입 을 적어준다.
람다 표현식이나 함수 템플릿을 만들 때 주로 사용한다.
//int square(int a)
auto square(int a) -> int
{
return a * a;
}
//int main()
auto main() -> int
{
square(3);
}
에러 케이스
// T1, T2 두 개의 타입을 받아 처리하는 템플릿 선언하는데 에러가 발생한다.
// a, b 가 선언되어 있지 않다는 에러가 발생함.
template<typename T1, typename T2>
decltype(a + b) add(T1 a, T2 b)
{
return a + b;
}
int main()
{
add(1, 2.1);
}
C++11부터는 아래와 같이 후위 반환 타입 형태로 템플릿을 생성할 수 있다.
// T1, T2 두 개의 타입을 받아 처리하는 템플릿 선언하는 방법
template<typename T1, typename T2>
auto add(T1 a, T2 b) -> decltype(a + b) // C++11
{
return a + b;
}
int main()
{
add(1, 2.1);
}
C++14부터는 아래와 같은 형태로 템플릿 생성이 가능하다.
// T1, T2 두 개의 타입을 받아 처리하는 템플릿 선언하는 방법
template<typename T1, typename T2>
auto add(T1 a, T2 b) // C++14
{
return a + b;
}
int main()
{
add(1, 2.1);
}
'C++' 카테고리의 다른 글
[C++] 함수 : Lamda expression (람다 표현식) (0) | 2021.08.11 |
---|---|
[C++] 함수 : constexpr function (0) | 2021.08.10 |
[C++] 함수 삭제 (function delete) (0) | 2021.08.09 |
[C++] 함수 : template, inline (0) | 2021.08.09 |
[C++] 함수 : default parameter, function overloading (0) | 2021.08.08 |
댓글