튜플을 가변 템플릿 함수 인수로 확장
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!