C++에서 템플릿으로 람다의 파라메터타입 알아내기

코드:

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(&amp;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
이 글은 Uncategorized 카테고리에 분류되었고 태그가 있습니다. 고유주소 북마크.

댓글 남기기