Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpSpTsPt 390 of 696 menu
◀ ▶

Частичная специализация шаблона в 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, чтобы отличить общий шаблон от указательной специализации.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить