>백엔드 개발 >C++ >C에서 튜플을 Variadic 템플릿 함수 인수로 확장하려면 어떻게 해야 합니까?

C에서 튜플을 Variadic 템플릿 함수 인수로 확장하려면 어떻게 해야 합니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-02 19:42:43524검색

How Can I Expand Tuples into Variadic Template Function Arguments in C  ?

튜플을 가변 템플릿 함수 인수로 확장

C 17 이상에서 std::apply 함수는 다음을 제공합니다. 이 문제에 대한 간단한 해결책. 호출 가능한 객체와 튜플을 인수로 사용하여 기본적으로 튜플을 함수의 개별 인수로 확장합니다.

#include <tuple>

template<typename Tret, typename... T> Tret func(const T&... t);

int main() {
    std::tuple<int, float> my_tuple;
    auto result = std::apply(func<int, int, float>, my_tuple);
    return 0;
}

Clang 버전 3.9 이상에서는 std::experimental::apply 유사한 기능으로 사용할 수 있습니다.

템플릿 기능 처리 인수

템플릿 함수가 가변 템플릿 인수를 사용하는 경우 해결 방법을 사용할 수 있습니다.

#include <tuple>

template<typename T> void my_func(T&& t) {}

int main() {
    std::tuple<int, float> my_tuple;
    std::apply([](auto&&... args) { my_func(args...); }, my_tuple);
    return 0;
}

이 접근 방식을 사용하면 유형 안전성이 약간 떨어지더라도 템플릿 함수가 튜플 인수를 허용할 수 있습니다. . 보다 일반적이고 강력한 솔루션을 보려면 다음 리소스를 참조하세요: https://blog.tartanllama.xyz/passing-overload-sets/.

위 내용은 C에서 튜플을 Variadic 템플릿 함수 인수로 확장하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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