>  기사  >  백엔드 개발  >  Variadic 템플릿 클래스에서 함수 인수 유형을 검색하는 방법은 무엇입니까?

Variadic 템플릿 클래스에서 함수 인수 유형을 검색하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-01 10:17:30457검색

How to Retrieve Function Argument Types in a Variadic Template Class?

가변 템플릿 클래스에서 함수 인수 유형 검색

지정된 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.