Namespaces
Variants

std::experimental::propagate_const<T>:: propagate_const

From cppreference.net
constexpr propagate_const ( ) = default ;
(1) (라이브러리 fundamentals TS v2)
constexpr propagate_const ( propagate_const && p ) = default ;
(2) (라이브러리 fundamentals TS v2)
template < class U >
/* 아래 참조 */ constexpr propagate_const ( propagate_const < U > && pu ) ;
(3) (라이브러리 fundamentals TS v2)
template < class U >
/* 아래 참조 */ constexpr propagate_const ( U && u ) ;
(4) (라이브러리 fundamentals TS v2)
propagate_const ( const propagate_const & ) = delete ;
(5) (라이브러리 fundamentals TS v2)

t_ 를 감싸진 포인터와 유사한 객체인 private 데이터 멤버로 지정합니다.

1) propagate_const 를 생성하며, this - > t_ 를 기본 초기화합니다.
2) 명시적으로 기본화된 이동 생성자로, this - > t_ p. t_ 에서 이동 생성합니다.
3) this - > t_ 를 마치 std :: move ( pu. t_ ) 표현식으로부터 직접-비목록-초기화(direct-non-list-initialization)하듯 초기화합니다.
이 생성자는 std:: is_constructible < T, U > :: value true 인 경우에만 오버로드 해결에 참여하며, std:: is_convertible < U, T > :: value false 인 경우에만 explicit 입니다.
4) this - > t_ 를 마치 직접-비목록-초기화(direct-non-list-initialization)로 std:: forward < U > ( u ) 표현식으로 초기화합니다.
이 생성자는 std:: is_constructible < T, U > :: value true 이고 std:: decay_t < U > propagate_const 의 특수화(specialization)가 아닐 때만 오버로드 해결에 참여합니다. 이 생성자는 std:: is_convertible < U, T > :: value false 인 경우에만 explicit 입니다.
5) 복사 생성자가 명시적으로 삭제되었습니다. propagate_const 는 복사할 수 없습니다.

매개변수

p - 이동할 다른 propagate_const 객체
pu - 다른 특수화를 가진 이동할 다른 propagate_const 객체
u - 포함된 포인터를 초기화할 다른 객체

참고 사항

Library Fundamental TS v2(C++14 기반)에서, (4) (5) 는 일반적으로 explicit /non- explicit 오버로드 쌍으로 구현됩니다. Library Fundamental TS v3(C++20 기반)부터는 조건부 explicit 지정자로 구현될 수 있습니다.