std::experimental::propagate_const<T>:: propagate_const
From cppreference.net
<
cpp
|
experimental
|
propagate const
|
constexpr
propagate_const
(
)
=
default
;
|
(1) | (bibliothèque fondamentale TS v2) |
|
constexpr
propagate_const
(
propagate_const
&&
p
)
=
default
;
|
(2) | (bibliothèque fondamentale TS v2) |
|
template
<
class
U
>
/* voir ci-dessous */ constexpr propagate_const ( propagate_const < U > && pu ) ; |
(3) | (bibliothèque fondamentale TS v2) |
|
template
<
class
U
>
/* voir ci-dessous */ constexpr propagate_const ( U && u ) ; |
(4) | (bibliothèque fondamentale TS v2) |
|
propagate_const
(
const
propagate_const
&
)
=
delete
;
|
(5) | (bibliothèque fondamentale TS v2) |
Soit
t_
désigne le membre de données privé qui est l'objet de type pointeur encapsulé.
1)
Construit un
propagate_const
, initialisant par défaut
this
-
>
t_
.
2)
Constructeur de déplacement explicitement par défaut qui construit par déplacement
this
-
>
t_
à partir de
p.
t_
.
3)
Initialise
this
-
>
t_
comme par initialisation directe non-liste à partir de l'expression
std
::
move
(
pu.
t_
)
.
Ce constructeur ne participe pas à la résolution de surcharge sauf si std:: is_constructible < T, U > :: value est true , et est
Ce constructeur ne participe pas à la résolution de surcharge sauf si std:: is_constructible < T, U > :: value est true , et est
explicit
si et seulement si
std::
is_convertible
<
U, T
>
::
value
est
false
.
4)
Initialise
this
-
>
t_
comme par initialisation directe non-liste avec l'expression
std::
forward
<
U
>
(
u
)
.
Ce constructeur ne participe pas à la résolution de surcharge sauf si std:: is_constructible < T, U > :: value est true et std:: decay_t < U > n'est pas une spécialisation de
Ce constructeur ne participe pas à la résolution de surcharge sauf si std:: is_constructible < T, U > :: value est true et std:: decay_t < U > n'est pas une spécialisation de
propagate_const
. Ce constructeur est
explicit
si et seulement si
std::
is_convertible
<
U, T
>
::
value
est
false
.
5)
Le constructeur de copie est explicitement supprimé.
propagate_const
n'est pas copiable.
Paramètres
| p | - |
un autre objet
propagate_const
à déplacer
|
| pu | - |
un autre objet
propagate_const
d'une spécialisation différente à déplacer
|
| u | - | un autre objet pour initialiser le pointeur contenu |
Notes
Dans la Library Fundamental TS v2 (basée sur C++14),
(4)
et
(5)
sont généralement implémentés en paires de surcharges
explicit
/non-
explicit
. Depuis la Library Fundamental TS v3 (basée sur C++20), ils peuvent être implémentés avec des spécificateurs
explicit
conditionnels.