std::experimental::propagate_const<T>:: propagate_const
From cppreference.net
<
cpp
|
experimental
|
propagate const
|
constexpr
propagate_const
(
)
=
default
;
|
(1) | (ライブラリ基盤仕様 TS v2) |
|
constexpr
propagate_const
(
propagate_const
&&
p
)
=
default
;
|
(2) | (ライブラリ基盤仕様 TS v2) |
|
template
<
class
U
>
/* 詳細は後述 */ constexpr propagate_const ( propagate_const < U > && pu ) ; |
(3) | (ライブラリ基盤仕様 TS v2) |
|
template
<
class
U
>
/* 詳細は後述 */ constexpr propagate_const ( U && u ) ; |
(4) | (ライブラリ基盤仕様 TS v2) |
|
propagate_const
(
const
propagate_const
&
)
=
delete
;
|
(5) | (ライブラリ基盤仕様 TS v2) |
Let
t_
が、ラップされたポインタライクなオブジェクトであるプライベートデータメンバを指すものとします。
1)
propagate_const
を構築し、
this
-
>
t_
をデフォルト初期化します。
2)
明示的にデフォルト化されたムーブコンストラクタで、
this
-
>
t_
を
p.
t_
からムーブ構築する。
3)
this
-
>
t_
を
std
::
move
(
pu.
t_
)
式からの直接非リスト初期化によって初期化する。
このコンストラクタは、 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)
このコンストラクタは、 std:: forward < U > ( u ) が std:: is_constructible < T, U > :: value が true であり、かつ std:: decay_t < U > が
this->t_
を
this
-
>
t_
式による直接非リスト初期化によって初期化する。
このコンストラクタは、 std:: forward < U > ( u ) が std:: is_constructible < T, U > :: value が true であり、かつ std:: decay_t < U > が
propagate_const
の特殊化でない場合に限り、オーバーロード解決に参加する。このコンストラクタは、
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
/非
explicit
オーバーロードペアで実装されます。Library Fundamental TS v3(C++20ベース)以降では、条件付き
explicit
指定子で実装可能です。