Namespaces
Variants

std::experimental:: static_pointer_cast, std::experimental:: dynamic_pointer_cast, std::experimental:: const_pointer_cast, std::experimental:: reinterpret_pointer_cast

From cppreference.net
std::experimental::shared_ptr
Member functions
Non-member functions
experimental::static_pointer_cast experimental::dynamic_pointer_cast experimental::const_pointer_cast experimental::reinterpret_pointer_cast
Members and non-members identical to those of std::shared_ptr
template < class T, class U >

std:: experimental :: shared_ptr < T >

static_pointer_cast ( const std:: experimental :: shared_ptr < U > & r ) noexcept ;
(1) (TS de fundamentos de biblioteca)
template < class T, class U >

std:: experimental :: shared_ptr < T >

dynamic_pointer_cast ( const std:: experimental :: shared_ptr < U > & r ) noexcept ;
(2) (TS de fundamentos de biblioteca)
template < class T, class U >

std:: experimental :: shared_ptr < T >

const_pointer_cast ( const std:: experimental :: shared_ptr < U > & r ) noexcept ;
(3) (TS de fundamentos de biblioteca)
template < class T, class U >

std:: experimental :: shared_ptr < T >

reinterpret_pointer_cast ( const std:: experimental :: shared_ptr < U > & r ) noexcept ;
(4) (TS de fundamentos de biblioteca)

Crea una nueva instancia de std::experimental::shared_ptr cuyo puntero almacenado se obtiene del puntero almacenado de r usando una expresión de conversión. Si r está vacío, también lo estará el nuevo shared_ptr (pero su puntero almacenado no es necesariamente nulo).

De lo contrario, el nuevo shared_ptr compartirá la propiedad con r , excepto que estará vacío si el dynamic_cast realizado por dynamic_pointer_cast devuelve un puntero nulo.

Sea Y el typename std:: experimental :: shared_ptr < T > :: element_type , entonces el puntero almacenado resultante de std::experimental::shared_ptr se obtendrá llamando (en orden respectivo):

1) static_cast < Y * > ( r. get ( ) ) .
2) dynamic_cast < Y * > ( r. get ( ) ) (si el resultado del dynamic_cast es un valor de puntero nulo, el shared_ptr devuelto estará vacío).
3) const_cast < Y * > ( r. get ( ) ) .
4) reinterpret_cast < Y * > ( r. get ( ) ) .

El comportamiento de estas funciones es indefinido a menos que la conversión correspondiente de U* a T* esté bien formada:

1) El comportamiento no está definido a menos que static_cast < T * > ( ( U * ) nullptr ) esté bien formado.
2) El comportamiento no está definido a menos que dynamic_cast < T * > ( ( U * ) nullptr ) esté bien formado.
3) El comportamiento no está definido a menos que const_cast < T * > ( ( U * ) nullptr ) esté bien formado.
4) El comportamiento no está definido a menos que reinterpret_cast < T * > ( ( U * ) nullptr ) esté bien formado.

Parámetros

r - el puntero a convertir

Ejemplo

Véase también

construye un nuevo shared_ptr
(función miembro pública)
aplica static_cast , dynamic_cast , const_cast , o reinterpret_cast al puntero almacenado
(plantilla de función)