Rumah >pembangunan bahagian belakang >C++ >Adakah Kelas Pengkhususan Templat dalam C?
Adakah Kelas Pengkhususan Templat?
Dalam C , ia boleh berguna untuk menentukan sama ada jenis tertentu ialah pengkhususan bagi sesuatu templat kelas. Sebagai contoh, pertimbangkan kod berikut:
template<class t> struct A {}; template<class comparet> void compare() { // is this A? cout , CompareT >::value ???? }</class></class>
Memandangkan kod di atas, bagaimana kami boleh mengesahkan jika CompareT ialah A untuk beberapa jenis *?
Penyelesaian:
Menggunakan metafungsi templat is_specialization, anda boleh menyemak sama ada sesuatu jenis ialah pengkhususan templat kelas. Berikut ialah contoh:
template<class t template> class Template> struct is_specialization : std::false_type {}; template<template> class Template, class... Args> struct is_specialization<template>, Template> : std::true_type {}; static_assert(is_specialization<:vector>, std::vector>{}, ""); static_assert(!is_specialization<:vector>, std::list>{}, "");</:vector></:vector></template></template></class>
Dalam contoh di atas, is_specialization mengambil dua hujah: T dan Templat. Jika T ialah pengkhususan Templat, is_specialization
Atas ialah kandungan terperinci Adakah Kelas Pengkhususan Templat dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!