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) (Bibliotheksgrundlagen TS)
template < class T, class U >

std:: experimental :: shared_ptr < T >

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

std:: experimental :: shared_ptr < T >

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

std:: experimental :: shared_ptr < T >

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

Erstellt eine neue Instanz von std::experimental::shared_ptr , deren gespeicherter Zeiger durch einen Cast-Ausdruck aus dem gespeicherten Zeiger von r erhalten wird. Wenn r leer ist, ist auch der neue shared_ptr leer (sein gespeicherter Zeiger ist jedoch nicht notwendigerweise null).

Andernfalls teilt sich der neue shared_ptr die Eigentümerschaft mit r , außer dass er leer ist, falls das durch dynamic_cast ausgeführte dynamic_pointer_cast einen Nullzeiger zurückgibt.

Sei Y der typename std:: experimental :: shared_ptr < T > :: element_type , dann wird der gespeicherte Zeiger der resultierenden std::experimental::shared_ptr durch Aufruf (in entsprechender Reihenfolge) erhalten:

1) static_cast < Y * > ( r. get ( ) ) .
2) dynamic_cast < Y * > ( r. get ( ) ) (falls das Ergebnis des dynamic_cast ein Nullzeigerwert ist, wird der zurückgegebene shared_ptr leer sein).
3) const_cast < Y * > ( r. get ( ) ) .
4) reinterpret_cast < Y * > ( r. get ( ) ) .

Das Verhalten dieser Funktionen ist undefiniert, sofern der entsprechende Cast von U* zu T* nicht wohlgeformt ist:

1) Das Verhalten ist undefiniert, es sei denn static_cast < T * > ( ( U * ) nullptr ) ist wohlgeformt.
2) Das Verhalten ist undefiniert, es sei denn dynamic_cast < T * > ( ( U * ) nullptr ) ist wohlgeformt.
3) Das Verhalten ist undefiniert, es sei denn const_cast < T * > ( ( U * ) nullptr ) ist wohlgeformt.
4) Das Verhalten ist undefiniert, es sei denn reinterpret_cast < T * > ( ( U * ) nullptr ) ist wohlgeformt.

Parameter

r - der zu konvertierende Zeiger

Beispiel

Siehe auch

Konstruiert neuen shared_ptr
(öffentliche Elementfunktion)
Wendet static_cast , dynamic_cast , const_cast , oder reinterpret_cast auf den gespeicherten Zeiger an
(Funktionstemplate)