std::experimental::propagate_const<T>:: propagate_const
From cppreference.net
<
cpp
|
experimental
|
propagate const
|
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 인 경우에만
이 생성자는 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 > 가
이 생성자는 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
지정자로 구현될 수 있습니다.