가변 템플릿 클래스에서 함수 인수 유형 검색
지정된 functor 클래스인 Foo는 임의의 인수 목록으로 함수를 호출하는 수단을 제공합니다. . 그러나 생성자 내에서 인수 유형을 결정하는 것은 어려운 일입니다.
이를 극복하려면 다음과 같이 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>
Foo 클래스 내에서 function_traits를 사용할 수 있습니다. 인수 유형 정보를 얻으려면:
<code class="cpp">class Foo { std::function<void(ARGS...)> m_f; public: using result_type = typename function_traits<decltype(m_f)>::result_type; using arg0_type = typename function_traits<decltype(m_f)>::arg<0>::type; // ... Additional argument types as needed };</code>
이 접근 방식을 사용하면 유형 시스템을 활용하여 일반적이고 유형이 안전한 방식으로 함수 인수 유형에 액세스하고 조작할 수 있습니다.
위 내용은 Variadic 템플릿 클래스에서 함수 인수 유형을 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!