가변 템플릿 클래스에서 함수 포인터의 인수 유형 검색
이전 호에서는 함수를 처리하기 위해 일반 functor 클래스가 생성되었습니다. 임의의 인수 목록을 사용합니다. 당면한 문제는 이 클래스의 생성자 내에서 함수 포인터의 인수 유형에 액세스하는 것과 관련됩니다.
이 문제를 해결하려면 function_traits 클래스 템플릿을 활용할 수 있습니다.
<code class="cpp">template<typename T> struct function_traits; template<typename R, typename ...Args> struct function_traits<std::function<R(Args...)>> { static const size_t nargs = sizeof...(Args); typedef R result_type; template <size_t i> struct arg { typedef typename std::tuple_element<i, std::tuple<Args...>>::type type; }; };</code>
이 클래스 다음 기능을 제공합니다:
예:
<code class="cpp">struct R{}; struct A{}; struct B{}; typedef std::function<R(A,B)> fun; std::cout << std::is_same<R, function_traits<fun>::result_type>::value << std::endl; std::cout << std::is_same<A, function_traits<fun>::arg<0>::type>::value << std::endl; std::cout << std::is_same<B, function_traits<fun>::arg<1>::type>::value << std::endl;</code>
출력:
1 1 1
이 예에서는 가변 템플릿 클래스의 생성자 내에서 인수 유형을 검색하기 위해 function_traits를 활용하는 방법을 보여줍니다.
위 내용은 Variadic 템플릿 클래스에서 함수 포인터의 인수 유형을 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!