Guías de deducción para std::shared_ptr
De cppreference.com
< cpp | memory | shared ptr
Definido en el archivo de encabezado <memory>
|
||
template <class T> shared_ptr(std::weak_ptr<T>) -> shared_ptr<T>; |
(1) | (desde C++17) |
template <class T, class D> shared_ptr(std::unique_ptr<T, D>) -> shared_ptr<T>; |
(2) | (desde C++17) |
Estas guías de deducción se proporcionan para std::shared_ptr para tener en cuenta los casos extremos omitidos por las guías de deducción implícitas.
Ten en cuenta que no hay una deducción de argumentos de plantillas de clase de los tipos puntero porque es imposible distinguir los punteros obtenidos de las formas de array y no array de new
.
[editar] Ejemplo
Ejecuta este código
#include <memory> int main() { auto p = std::make_shared<int>(42); std::weak_ptr w{p}; // en este caso se utiliza una guía de deducción explícita std::shared_ptr p2{w}; // en este caso se utiliza una guía de deducción explícita }