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 도 비어 있습니다(그러나 저장된 포인터가 반드시 null인 것은 아닙니다).

그렇지 않으면, 새로운 shared_ptr r 와 소유권을 공유하지만, dynamic_pointer_cast 에 의해 수행된 dynamic_cast 가 null 포인터를 반환하는 경우에는 비어 있게 됩니다.

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 의 결과가 null 포인터 값인 경우, 반환된 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)