首頁 > 後端開發 > C++ > 如何將值元組作為參數傳遞給 C 中的可變參數模板函數?

如何將值元組作為參數傳遞給 C 中的可變參數模板函數?

Patricia Arquette
發布: 2025-01-02 22:07:40
原創
542 人瀏覽過

How Can I Pass a Tuple of Values as Arguments to a Variadic Template Function in C  ?

從元組進行可變參數模板函數參數擴展

考慮一個帶有可變參數模板參數的模板函數:

template<typename Tret, typename... T> Tret func(const T&... t);
登入後複製

如何您可以使用值元組作為呼叫func() 嗎參數?

現代C 解決方案(C 17 及更高版本)

在C 17 中,std::apply() 函數提供了一個優雅的解決方案:

std::apply(the_function, the_tuple);
登入後複製

叮噹3.9解決方法

如果您使用的是 Clang 3.9,則可以改用 std::experimental::apply 函數。

處理模板化函數

如果 the_function是模板化的,您可以使用以下內容解決方法:

#include <tuple>

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

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板