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

std:: experimental :: shared_ptr < T >

dynamic_pointer_cast ( const std:: experimental :: shared_ptr < U > & r ) noexcept ;
(2) (ライブラリ基盤仕様TS)
template < class T, class U >

std:: experimental :: shared_ptr < T >

const_pointer_cast ( const std:: experimental :: shared_ptr < U > & r ) noexcept ;
(3) (ライブラリ基盤仕様TS)
template < class T, class U >

std:: experimental :: shared_ptr < T >

reinterpret_pointer_cast ( const std:: experimental :: shared_ptr < U > & r ) noexcept ;
(4) (ライブラリ基盤仕様TS)

r の格納されたポインタからキャスト式を用いて取得した格納ポインタを持つ、新しい std::experimental::shared_ptr インスタンスを作成します。 r が空の場合、新しい shared_ptr も空になります(ただし、その格納ポインタは必ずしもヌルとは限りません)。

そうでなければ、新しい shared_ptr r と所有権を共有します。ただし、 dynamic_pointer_cast によって実行される dynamic_cast がヌルポインタを返した場合、新しい shared_ptr は空になります。

Y typename std:: experimental :: shared_ptr < T > :: element_type とすると、結果の std::experimental::shared_ptr の格納されたポインタは(それぞれの順序で)呼び出しによって取得されます:

1) static_cast < Y * > ( r. get ( ) ) .
2) dynamic_cast < Y * > ( r. get ( ) ) ( dynamic_cast の結果がヌルポインタ値の場合、返される shared_ptr は空になります)。
3) const_cast < Y * > ( r. get ( ) ) .
4) reinterpret_cast < Y * > ( r. get ( ) ) .

これらの関数の動作は、 U* から T* への対応するキャストが適切に形成されない限り未定義です:

1) 動作は未定義である、ただし static_cast < T * > ( ( U * ) nullptr ) が適正な形式である場合を除く。
2) 動作は未定義である、ただし dynamic_cast < T * > ( ( U * ) nullptr ) が適切に形成されている場合を除く。
3) 動作は未定義である、ただし const_cast < T * > ( ( U * ) nullptr ) が適切に形成されている場合を除く。
4) 動作は未定義である、ただし reinterpret_cast < T * > ( ( U * ) nullptr ) が適正な形式である場合を除く。

パラメータ

r - 変換するポインタ

関連項目

新しい shared_ptr を構築する
(public member function)
格納されたポインタに static_cast , dynamic_cast , const_cast , または reinterpret_cast を適用する
(function template)