從元組進行可變參數模板函數參數擴展
考慮一個帶有可變參數模板參數的模板函數:
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中文網其他相關文章!