(C++ : Template) 함수 리턴타입 구하기

Posted by : at

Category : Cpp


#include <iostream>
using namespace std;

double hoo(short a, int b) { return 0; }

// 인자가 하나일 경우 이렇게 한다지만...
template<typename T> struct result_type
{
  typedef T type;
};

template<typename R, typename A1, typename A2> 
struct result_type<R(A1, A2)>     // 만약 인자가 여러개라면??
{
  typedef R type;
};

template<typename T> void foo(const T& t)
{
  typename result_type<T>::type ret;
  cout << typeid(ret).name() << endl;
}

int main()
{
  foo(hoo);
}
template<typename T> struct result_type
{
  typedef T type;
};

template<typename R, typename ... Types> 
struct result_type<R(Types...)> 
{
  typedef R type;
};

template<typename T> void foo(const T& t)
{
  typename result_type<T>::type ret;
  cout << typeid(ret).name() << endl;
}
template<typename T> struct result_type
{
  // typedef T type;
  // 함수가 아닐경우 에러처리
  static_assert(is_function<T>::value, "error");
};

template<typename R, typename ... Types> 
struct result_type<R(Types...)> 
{
  typedef R type;
};

template<typename T> void foo(const T& t)
{
  typename result_type<T>::type ret;
  cout << typeid(ret).name() << endl;
}

About Taehyung Kim

안녕하세요? 8년차 현업 C++ 개발자 김태형이라고 합니다. 😁 C/C++을 사랑하며 다양한 사람과의 협업을 즐깁니다. ☕ 꾸준한 자기개발을 미덕이라 생각하며 노력중이며, 제가 얻은 지식을 홈페이지에 정리 중입니다. 좀 더 상세한 제 이력서 혹은 Private 프로젝트 접근 권한을 원하신다면 메일주세요. 😎

Star
Useful Links