Частичная специализация шаблона в C++
Частичная специализация оставляет в списке шаблона один или несколько параметров, но фиксирует форму аргумента, например указатель.
Запись template<typename T> struct Box<T*>
описывает отдельное поведение для любого
типа указателя.
Запишем общий Box и вариант для
T*, затем выведем признак указателя:
#include <iostream>
template<typename T>
struct Box {
T value;
};
template<typename T>
struct Box<T*> {
T* value;
static constexpr int is_ptr = 1;
};
int main() {
int n = 3;
Box<int*> slot{&n};
std::cout << slot.is_ptr << "\n";
return 0;
}
Создайте Box<double*> с адресом
локальной double и выведите
is_ptr.
Объявите Box<int> с целым
4 и выведите value,
чтобы отличить общий шаблон от указательной
специализации.