std::experimental::propagate_const<T>:: propagate_const
From cppreference.net
<
cpp
|
experimental
|
propagate const
|
constexpr
propagate_const
(
)
=
default
;
|
(1) | (Library Fundamentals TS v2) |
|
constexpr
propagate_const
(
propagate_const
&&
p
)
=
default
;
|
(2) | (Library Fundamentals TS v2) |
|
template
<
class
U
>
/* siehe unten */ constexpr propagate_const ( propagate_const < U > && pu ) ; |
(3) | (Library Fundamentals TS v2) |
|
template
<
class
U
>
/* siehe unten */ constexpr propagate_const ( U && u ) ; |
(4) | (Library Fundamentals TS v2) |
|
propagate_const
(
const
propagate_const
&
)
=
delete
;
|
(5) | (Library Fundamentals TS v2) |
Lassen Sie
t_
das private Datenelement bezeichnen, das das umschlossene zeigerähnliche Objekt ist.
1)
Konstruiert ein
propagate_const
, das
this
-
>
t_
standardmäßig initialisiert.
2)
Explizit defaulteter Move-Konstruktor, der
this
-
>
t_
aus
p.
t_
move-konstruiert.
3)
Initialisiert
this
-
>
t_
wie durch direkte Nicht-Listen-Initialisierung aus dem Ausdruck
std
::
move
(
pu.
t_
)
.
Dieser Konstruktor nimmt nicht an der Überladungsauflösung teil, es sei denn std:: is_constructible < T, U > :: value ist true , und ist
Dieser Konstruktor nimmt nicht an der Überladungsauflösung teil, es sei denn std:: is_constructible < T, U > :: value ist true , und ist
explicit
genau dann, wenn
std::
is_convertible
<
U, T
>
::
value
ist
false
.
4)
Initialisiert
this
-
>
t_
wie durch direkte Nicht-Listen-Initialisierung mit dem Ausdruck
std::
forward
<
U
>
(
u
)
.
Dieser Konstruktor nimmt nicht an der Überladungsauflösung teil, es sei denn std:: is_constructible < T, U > :: value ist true und std:: decay_t < U > ist keine Spezialisierung von
Dieser Konstruktor nimmt nicht an der Überladungsauflösung teil, es sei denn std:: is_constructible < T, U > :: value ist true und std:: decay_t < U > ist keine Spezialisierung von
propagate_const
. Dieser Konstruktor ist
explicit
genau dann, wenn
std::
is_convertible
<
U, T
>
::
value
ist
false
.
5)
Der Kopierkonstruktor ist explizit gelöscht.
propagate_const
ist nicht kopierbar.
Parameter
| p | - |
ein weiteres
propagate_const
Objekt, von dem verschoben werden soll
|
| pu | - |
ein weiteres
propagate_const
Objekt einer anderen Spezialisierung, von dem verschoben werden soll
|
| u | - | ein weiteres Objekt, mit dem der enthaltene Zeiger initialisiert werden soll |
Hinweise
In Library Fundamental TS v2 (basierend auf C++14),
(4)
und
(5)
werden typischerweise in
explicit
/non-
explicit
Überladungspaaren implementiert. Seit Library Fundamental TS v3 (basierend auf C++20) können sie in bedingten
explicit
Spezifizierern implementiert werden.