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
509 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!

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