코드:
template<typename T> struct lambda_arg_type { template<typename OBJ_T, typename ARG_T, typename RET_T> static ARG_T * func_arg( RET_T (OBJ_T:: * f)(ARG_T) const ) { return nullptr; } typedef decltype(*func_arg(&T::operator())) type; }; template<typename T> void function_test( T func ) { typedef lambda_arg_type<T>::type arg_t; cout << typeid(arg_t).name() << endl; } int _tmain(int argc, _TCHAR* argv[]) { function_test( [](int v) {} ); return 0; }
출력:
int