Rumah > pembangunan bahagian belakang > C++ > Bolehkah Metaprogramming Membantu Mentakrifkan Templat Berdasarkan Penukaran Rentetan?

Bolehkah Metaprogramming Membantu Mentakrifkan Templat Berdasarkan Penukaran Rentetan?

Susan Sarandon
Lepaskan: 2024-11-09 14:12:02
asal
1052 orang telah melayarinya

Can Metaprogramming Help Define Templates Based on String Conversion?

Metaprogramming: Kriteria Pemilihan Templat Alternatif untuk Definisi Fungsi

Soalan ini meneroka konsep mentakrifkan templat berdasarkan keupayaan jenis untuk ditukar kepada rentetan. Kod asal menggunakan ciri jenis is_arithmetic, tetapi cadangannya ialah menggunakan kriteria yang menilai sama ada to_string ditakrifkan untuk jenis tersebut.

Walau bagaimanapun, bertentangan dengan kriteria ini, menentukan bila to_string tidak ditakrifkan, membuktikan mencabar. Kod berikut gagal:

template<typename T> enable_if_t<decltype(to_string(T{})::value, string> (T t){
    // ...
}
Salin selepas log masuk

Untuk menangani perkara ini, jawapannya mencadangkan menggunakan ciri jenis void_t Walter Brown, yang membenarkan penciptaan yang berikut:

template<typename T, typename = void>
struct has_to_string
: std::false_type { };

template<typename T>
struct has_to_string<T, 
    void_t<decltype(std::to_string(std::declval<T>()))>
    > 
: std::true_type { };
Salin selepas log masuk

Sifat jenis ini menilai dengan berkesan sama ada to_string ditakrifkan untuk jenis tertentu, sekali gus menyediakan kriteria pemilihan templat alternatif yang lebih tepat sejajar dengan niat asal.

Atas ialah kandungan terperinci Bolehkah Metaprogramming Membantu Mentakrifkan Templat Berdasarkan Penukaran Rentetan?. 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