Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Melepaskan Tuple of Values ​​sebagai Argumen kepada Fungsi Templat Variadik dalam C ?

Bagaimanakah Saya Boleh Melepaskan Tuple of Values ​​sebagai Argumen kepada Fungsi Templat Variadik dalam C ?

Patricia Arquette
Lepaskan: 2025-01-02 22:07:40
asal
542 orang telah melayarinya

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

Peluasan Argumen Fungsi Templat Variadik daripada Tuples

Pertimbangkan fungsi templat dengan parameter templat variadik:

template<typename Tret, typename... T> Tret func(const T&... t);
Salin selepas log masuk

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);
Salin selepas log masuk

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;
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan