Namensräume
Varianten
Aktionen

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

Von cppreference.com
 
 
 
 
std::experimental::shared_ptr
Memberfunktionen
Nicht-Member-Funktionen
experimental::static_pointer_castexperimental::dynamic_pointer_castexperimental::const_pointer_castexperimental::reinterpret_pointer_cast
Member und Nicht-Member-Funktionen identisch zu denen von 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) (library fundamentals TS)
template< class T, class U >

std::experimental::shared_ptr<T>

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

std::experimental::shared_ptr<T>

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

std::experimental::shared_ptr<T>

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

Erstellt eine neue Instanz von std::experimental::shared_ptr, deren gespeicherter Zeiger aus dem gespeicherten Zeiger von r mittels eines Cast-Ausdrucks gewonnen wird. Wenn r leer ist, ist auch der neue shared_ptr leer (aber sein gespeicherter Zeiger ist nicht notwendigerweise null).

Andernfalls teilt der neue shared_ptr den Besitz mit r, mit der Ausnahme, dass er leer ist, wenn der von dynamic_pointer_cast ausgeführte dynamic_cast einen Nullzeiger zurückgibt.

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

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

Das Verhalten dieser Funktionen ist undefiniert, es sei denn, der entsprechende Cast von U* nach T* ist wohlgeformt

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.

[bearbeiten] Parameter

r - der zu konvertierende Zeiger

[bearbeiten] Beispiel

[bearbeiten] Siehe auch

erstellt einen neuen shared_ptr
(public member function) [bearbeiten]
wendet static_cast, dynamic_cast, const_cast oder reinterpret_cast auf den gespeicherten Zeiger an
(Funktionsschablone) [bearbeiten]