본문 바로가기
  • 쓸쓸한 개발자의 공부방
C++

[C++] 함수 : 후위 반환 타입(suffix return, trailing return)

by 심찬 2021. 8. 10.

 

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);
}

 

 

댓글