Проводник вывода шаблона в C++
Проводник вывода - это дополнение к шаблону класса, которое подсказывает компилятору, какие параметры шаблона вывести из аргументов конструктора.
Без проводника конструктор от указателя
может вывести параметр как тип указателя,
а не как тип объекта.
Запишем Handle, проводник
Handle(T*) -> Handle<T>
и создадим объект через вывод типов:
#include <iostream>
template<typename T>
struct Handle {
T* ptr;
Handle(T* p) : ptr(p) {}
};
template<typename T>
Handle(T*) -> Handle<T>;
int main() {
int value = 7;
Handle h{&value};
std::cout << *h.ptr << "\n";
return 0;
}
Объявите template<typename T> struct Slot
с конструктором от T* и проводником
Slot(T*) -> Slot<T>. Создайте
Slot от double и выведите
значение по указателю.