Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah sintaks elipsis berfungsi dengan pek parameter templat variadic dalam C 11?

Bagaimanakah sintaks elipsis berfungsi dengan pek parameter templat variadic dalam C 11?

Susan Sarandon
Susan Sarandonasal
2024-10-30 10:52:03872semak imbas

How does the ellipsis syntax work with variadic template parameter packs in C  11?

Sintaks Elipsis Templat Variadik

Templat variadik dalam C 11 membenarkan bilangan argumen templat yang berubah-ubah. Sintaks untuk token elipsis (...) dalam konteks ini mengikut peraturan yang ketat:

Membongkar/Membungkus:
Kedudukan elipsis menentukan tujuannya:

  • Sebelah kanan (corak): Membongkar pek parameter templat.
  • Sebelah kiri (nama): Mencipta hujah yang padat.

Peluasan:
Corak di sebelah kiri ... diulang, dengan ungkapan dipisahkan koma menggantikan setiap corak yang tidak dibungkus.

Aplikasi:
Dalam kod yang disediakan:

<code class="cpp">return unique_ptr<T>(new T(std::forward<Args>(args)...));</code>
  • std::forward: Merupakan fungsi templat bukan variasi yang mengambil satu parameter dan hujah templat.
  • Membongkar: std::forward(args)... mengembang kepada std::forward(arg0), std::forward(arg1), ..., dengan arg0, arg1, ... ialah hujah individu.

Sebab Peletakan Ellipsis:
Dalam senarai argumen templat dan senarai parameter, elipsis diletakkan di tengah untuk mencapai pengembangan yang berbeza.

  • Senarai hujah templat: Elipsis membenarkan bilangan argumen yang berubah-ubah.
  • Parameter senarai: Ellipsis memastikan bahawa hujah diluluskan sebagai satu hujah yang dibungkus.

Nota Tambahan:

  • Corak boleh termasuk penentu capaian (cth., awam).
  • Elipsis boleh digunakan untuk memulakan tatasusunan, cth., {args, sizeof(T)}....
  • Sintaks adalah sama tanpa mengira sama ada templat ialah kelas atau fungsi.

Atas ialah kandungan terperinci Bagaimanakah sintaks elipsis berfungsi dengan pek parameter templat variadic dalam C 11?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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