Namespaces
Variants

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

From cppreference.net
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 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 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.