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