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) (spécification technique des fondamentaux de bibliothèque)
template < class T, class U >

std:: experimental :: shared_ptr < T >

dynamic_pointer_cast ( const std:: experimental :: shared_ptr < U > & r ) noexcept ;
(2) (spécification technique des fondamentaux de bibliothèque)
template < class T, class U >

std:: experimental :: shared_ptr < T >

const_pointer_cast ( const std:: experimental :: shared_ptr < U > & r ) noexcept ;
(3) (spécification technique des fondamentaux de bibliothèque)
template < class T, class U >

std:: experimental :: shared_ptr < T >

reinterpret_pointer_cast ( const std:: experimental :: shared_ptr < U > & r ) noexcept ;
(4) (spécification technique des fondamentaux de bibliothèque)

Crée une nouvelle instance de std::experimental::shared_ptr dont le pointeur stocké est obtenu à partir du pointeur stocké de r en utilisant une expression de cast. Si r est vide, la nouvelle instance de shared_ptr l'est également (mais son pointeur stocké n'est pas nécessairement nul).

Sinon, le nouveau shared_ptr partagera la propriété avec r , sauf qu'il sera vide si le dynamic_cast effectué par dynamic_pointer_cast retourne un pointeur nul.

Soit Y le typename std:: experimental :: shared_ptr < T > :: element_type , alors le pointeur stocké du std::experimental::shared_ptr résultant sera obtenu en appelant (dans l'ordre respectif) :

1) static_cast < Y * > ( r. get ( ) ) .
2) dynamic_cast < Y * > ( r. get ( ) ) (si le résultat du dynamic_cast est une valeur de pointeur nul, le shared_ptr retourné sera vide).
3) const_cast < Y * > ( r. get ( ) ) .
4) reinterpret_cast < Y * > ( r. get ( ) ) .

Le comportement de ces fonctions n'est pas défini à moins que la conversion correspondante de U* vers T* ne soit bien formée :

1) Le comportement n'est pas défini sauf si static_cast < T * > ( ( U * ) nullptr ) est bien formé.
2) Le comportement n'est pas défini sauf si dynamic_cast < T * > ( ( U * ) nullptr ) est bien formé.
3) Le comportement n'est pas défini sauf si const_cast < T * > ( ( U * ) nullptr ) est bien formé.
4) Le comportement n'est pas défini sauf si reinterpret_cast < T * > ( ( U * ) nullptr ) est bien formé.

Paramètres

r - le pointeur à convertir

Exemple

Voir aussi

construit un nouveau shared_ptr
(fonction membre publique)
applique static_cast , dynamic_cast , const_cast , ou reinterpret_cast au pointeur stocké
(modèle de fonction)