首頁 > 後端開發 > C++ > 如何將元組擴展為 C 中的可變參數模板函數參數?

如何將元組擴展為 C 中的可變參數模板函數參數?

Patricia Arquette
發布: 2025-01-02 19:42:43
原創
529 人瀏覽過

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 中的可變參數模板函數參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板