Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mengulangi Senarai Argumen Templat Variadik dalam C?

Bagaimana untuk Mengulangi Senarai Argumen Templat Variadik dalam C?

Linda Hamilton
Lepaskan: 2024-10-23 17:17:01
asal
199 orang telah melayarinya

How to Iterate Over Variadic Template Argument Lists in C  ?

Mengulangi Senarai Argumen Templat Variadic

Senarai hujah templat variadic yang dibungkus, walaupun berkuasa, boleh menimbulkan cabaran dalam mengakses hujah individu. Isu ini amat relevan apabila seseorang perlu mengulangi senarai tersebut untuk mengasingkan hujah berdasarkan jenisnya.

Untuk mencapai matlamat ini, satu pilihan ialah memanfaatkan ungkapan lipatan yang diperkenalkan dalam C 17. Dengan menggunakan boleh panggil, a ungkapan lambda dalam kes ini, seseorang boleh mentakrifkan gelung yang berulang melalui argumen dan melaksanakan operasi yang diingini.

Berikut ialah contoh:

<code class="cpp">#include <iostream>

template <class ... Ts>
void Foo(Ts && ... inputs) {
  int i = 0;

  // Lambda that executes for each passed argument.
  ([&] {
    ++i;
    std::cout << "input " << i << " = " << inputs << std::endl;
  }(), ...);
}

int main() {
  Foo(2, 3, 4u, (int64_t)9, 'a', 2.3);
  return 0;
}</code>
Salin selepas log masuk

Dalam contoh ini, lambda adalah sangat ringkas, tetapi operasi yang lebih kompleks boleh dilakukan dalam gelung. Adalah penting untuk ambil perhatian bahawa teknik ini memerlukan C 17 atau lebih baru.

Untuk senario di mana pemulangan atau keluar daripada lelaran diperlukan, cuba/buang dan ubah/jika pendekatan suis tersedia tetapi harus dianggap sebagai bau kod dan digunakan hanya jika tidak dapat dielakkan.

Atas ialah kandungan terperinci Bagaimana untuk Mengulangi Senarai Argumen Templat Variadik dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
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