將元組擴展為可變參數模板函數參數
在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中文網其他相關文章!