"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 가변 템플릿 클래스 내에서 함수 포인터의 인수 유형에 어떻게 액세스할 수 있나요?

가변 템플릿 클래스 내에서 함수 포인터의 인수 유형에 어떻게 액세스할 수 있나요?

2024년 11월 21일에 게시됨
검색:406

How can I access the argument types of a function pointer within a variadic template class?

가변 템플릿 클래스의 함수 포인터 인수 유형에 액세스

이 문제는 임의 인수가 있는 함수에 대한 일반 펑터 생성에 관한 이전 쿼리에서 발생합니다. 기울기. 주어진 functor 클래스인 Foo를 사용하면 원하는 수의 인수로 함수 포인터를 호출할 수 있습니다. 그러나 이제 작업은 Foo 생성자 내의 함수 포인터에서 인수 유형을 추출하는 것입니다.

Foo 클래스를 정의할 때 인수 유형은 생성자의 함수 포인터 선언에서 ARGS...로 캡슐화됩니다. 인수 값은 생성 시 사용할 수 없지만 함수 포인터 자체 내에서 해당 유형에 액세스할 수 있습니다.

이러한 인수 유형을 확인하려면 function_traits 클래스를 활용할 수 있습니다.

template 
struct function_traits;  

template>
{
    // Number of arguments
    static const size_t nargs = sizeof...(Args);

    // Return type
    typedef R result_type;

    // Argument types at specified index
    template <size_t i>
    struct arg
    {
        typedef typename std::tuple_element<i, std::tuple<Args...>>::type type;
    };
};

Foo 생성자 내에서 다음과 같이 function_traits를 사용하여 이러한 인수 유형에 액세스할 수 있습니다.

template

function_traits를 사용하면 Foo 클래스 내에서 인수 유형을 추출하고 활용할 수 있으므로 함수 서명을 기반으로 정교한 작업이 가능합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3