Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Kata Kunci `auto` C 17 Mempermudahkan Potongan Parameter Templat?

Bagaimanakah Kata Kunci `auto` C 17 Mempermudahkan Potongan Parameter Templat?

Barbara Streisand
Lepaskan: 2024-12-04 13:47:10
asal
548 orang telah melayarinya

How Does C  17's `auto` Keyword Simplify Template Parameter Deduction?

Kelebihan Potongan Parameter Templat Automatik dalam C 17

C 17 memperkenalkan kata kunci dalam parameter templat, penambahan ketara yang menawarkan banyak kelebihan.

Sambungan Semulajadi auto untuk Instantiasi Templat

Serupa dengan kata kunci auto yang digunakan untuk pengisytiharan berubah-ubah, < auto> dalam parameter templat membolehkan anda menyimpulkan jenis parameter bukan jenis pada masa instantiasi. Ia menghapuskan keperluan untuk menyatakan secara eksplisit jenis parameter, seperti yang dilihat dalam contoh di bawah:

auto v1 = constant<5>;      // v1 == 5, decltype(v1) is int
auto v2 = constant<true>;   // v2 == true, decltype(v2) is bool
auto v3 = constant<'a'>;    // v3 == 'a', decltype(v3) is char
Salin selepas log masuk

Kemudahan Dipertingkat

Menggantikan pengisytiharan jenis eksplisit dengan sangat memudahkan kod templat, menjadikannya lebih mudah dibaca dan diselenggara. Pertimbangkan kod berikut:

template <typename Type, Type value> constexpr Type constant = value;
constexpr auto const IntConstant42 = constant<int, 42>;
Salin selepas log masuk

Kod ini boleh ditulis semula dengan seperti berikut:

template <auto value> constexpr auto constant = value;
constexpr auto const IntConstant42 = constant<42>;
Salin selepas log masuk

Keringkasan Kod yang Dipertingkatkan

amat berguna apabila bekerja dengan parameter templat variadic. Contohnya, mencipta senarai masa kompilasi bagi nilai malar menjadi lebih ringkas dan mudah:

template <auto ... vs> struct HeterogenousValueList {};
using MyList1 = HeterogenousValueList<42, 'X', 13u>;

template <auto v0, decltype(v0) ... vs> struct HomogenousValueList {};
using MyList2 = HomogenousValueList<1, 2, 3>;
Salin selepas log masuk

Sebagai perbandingan, untuk mencapai kefungsian yang sama dalam pra-C 17 memerlukan lebih banyak binaan bertele-tele dan berbelit-belit yang melibatkan templat tambahan.

Atas ialah kandungan terperinci Bagaimanakah Kata Kunci `auto` C 17 Mempermudahkan Potongan Parameter Templat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China 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