: 아래의 코드를 복붙하고, 후위반환 타입으로 처리하는 코드를 작성하라.
template<typename T1, typename T2>
? ? func(T1 a, T2 b)
{
return a + b;
}
int main()
{
}
: 반환 타입을 컴파일 시간에 결정하는 기법.
결론
-> 반환 타입을 결정하기 어려울 때, 후위 반환 타입을 통해 처리할 수 있음.
템플릿 인자가 한개 들어온다면 , 해당 템플릿 인자 타입을 반환하면 되지만,
이와 같은 상황은 어떻게 해야할지...??
: 이때 사용되는 것이 suffix return? type임.
auto 함수명(T 인자명) -> 반환 타입
{ }
: 이런식으로 사용함.
: 이전 시간에 배운, auto 와 decltype을 이용해서
만들어보아라.
가) decltype을 이용해서 만들어봐라. : 잘못된 표현
: 이전 시간에 decltype의 괄호 안에다가 변수를 넣으면,
컴파일 시간에 컴파일러가 알아서 해당 타입으로 변환을 한다고 배웠음!
나) auto 를 이용해서 만들어보아라. : c++14부터 가능한 방법임
: 올바른 표현 이지만, 특징으로 인한 의도치 않은 문제가 있다.
auto는 참조성을 제거한다...
다) auto와 decltype을 합쳐서 만들어보아라.
: 올바른 표현
나)와 다) 간의 차이가 있음.
중급 과정에서 배우자.
: 반드시 함께 공부하자! 김원태!!!
-> chronometry upgrade 에 정리해 놓음.
: template 함수에서 반환타입을 결정할 때는 -> 후위 반환을 통해
반환 타입을 결정하도록 하자.