Espacios de nombres
Variantes
Acciones

Guías de deducción para std::shared_ptr

De cppreference.com
< cpp‎ | memory‎ | shared ptr
 
 
Biblioteca de servicios
 
Gestión de memoria dinámica
Punteros inteligentes
(C++11)
(C++11)
(C++11)
(hasta C++17)
(C++11)
(C++23)
Asignadores de memoria
Recursos de memoria
Almacenamiento no inicializado
Algoritmos de memoria no inicializada
Algoritmos restringidos de memoria no inicializada
Apoyo para recolección de basura
(C++11)(hasta C++23)
(C++11)(hasta C++23)
(C++11)(hasta C++23)
(C++11)(hasta C++23)
(C++11)(hasta C++23)
(C++11)(hasta C++23)
Misceláneos
(C++20)
(C++11)
(C++11)
 
 
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

#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
}