Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menentukan Pengkhususan Templat dalam C ?

Bagaimana untuk Menentukan Pengkhususan Templat dalam C ?

Mary-Kate Olsen
Lepaskan: 2024-11-13 06:25:02
asal
784 orang telah melayarinya

How to Determine Template Specialization in C  ?

Menentukan Pengkhususan Templat

Dalam C, selalunya perlu untuk memastikan sama ada jenis tertentu ialah pengkhususan templat kelas tertentu. Pertimbangkan contoh di bawah:

template <class T>
struct A {};
Salin selepas log masuk

Bagaimana kita boleh menentukan sama ada CompareT ialah A<*> untuk beberapa jenis * dalam kod berikut?

template<class CompareT>
void compare(){
   // is this A ?
   cout << is_same< A<*>, CompareT >::value;     // A<*> ????
}

int main(){
  compare< A<int> >();
}
Salin selepas log masuk

Sebagai contoh, di sini A sepatutnya sepadan dengan A<*> dan cetak 1.

Penyelesaian:

Untuk mencapainya, kita boleh menggunakan metafungsi tersuai yang dipanggil is_specialization:

template <class T, template <class...> class Template>
struct is_specialization : std::false_type {};

template <template <class...> class Template, class... Args>
struct is_specialization<Template<Args...>, Template> : std::true_type {};
Salin selepas log masuk

Metafungsi ini kembali benar jika T ialah pengkhususan Templat dan palsu sebaliknya. Untuk menggambarkan penggunaannya:

static_assert(is_specialization<std::vector<int>, std::vector>{}, "");
static_assert(!is_specialization<std::vector<int>, std::list>{}, "");
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menentukan Pengkhususan Templat dalam C ?. 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