Rumah > pembangunan bahagian belakang > C++ > Adakah Kelas Pengkhususan Templat dalam C?

Adakah Kelas Pengkhususan Templat dalam C?

DDD
Lepaskan: 2024-11-13 04:17:02
asal
800 orang telah melayarinya

Is a Class a Template Specialization in 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 << is_same< A<*> , CompareT >::value << endl; // A<?> ????
}
Salin selepas log masuk

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...> class Template>
struct is_specialization : std::false_type {};

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

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

Dalam contoh di atas, is_specialization mengambil dua hujah: T dan Templat. Jika T ialah pengkhususan Templat, is_specialization ialah std::true_type. Jika tidak, ia std::false_type.

Atas ialah kandungan terperinci Adakah Kelas 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan