Peluasan Argumen Fungsi Templat Variadik daripada Tuples
Pertimbangkan fungsi templat dengan parameter templat variadik:
template<typename Tret, typename... T> Tret func(const T&... t);
Bagaimana bolehkah anda memanggil func() menggunakan tuple nilai sebagai argumen?
Penyelesaian C Moden (C 17 dan Kemudian)
Dalam C 17, fungsi std::apply() menyediakan penyelesaian yang elegan:
std::apply(the_function, the_tuple);
Clang 3.9 Penyelesaian
Jika anda menggunakan Clang 3.9, anda boleh menggunakan fungsi std::experimental::apply.
Mengendalikan Fungsi Templat
Jika fungsi_templat, anda boleh menggunakan penyelesaian berikut:
#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; }
Set Lebihan Umum Invocation
Untuk penyelesaian yang lebih serba boleh yang boleh mengendalikan set beban lampau dan templat fungsi, rujuk penjelasan komprehensif di https://blog.tartanllama.xyz/passing-overload-sets/.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melepaskan Tuple of Values sebagai Argumen kepada Fungsi Templat Variadik dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!