Namespaces
Variants

std:: convertible_to

From cppreference.net
Défini dans l'en-tête <concepts>
template < class From, class To >

concept convertible_to =
std:: is_convertible_v < From, To > &&
requires {
static_cast < To > ( std:: declval < From > ( ) ) ;

} ;
(depuis C++20)

Le concept convertible_to < From, To > spécifie qu'une expression du même type et de la même catégorie de valeur que ceux de std:: declval < From > ( ) peut être convertie implicitement et explicitement en le type To , et que les deux formes de conversion produisent des résultats égaux.

Table des matières

Exigences sémantiques

convertible_to < From, To > est modélisé seulement si, étant donné une fonction fun de type std:: add_rvalue_reference_t < From > ( ) telle que l'expression fun ( ) est préservatrice d'égalité ,

  • Soit
    • To n'est ni un type objet ni un type référence-vers-objet, ou
    • static_cast < To > ( fun ( ) ) est égal à [ ] ( ) - > To { return fun ( ) ; } ( ) , et
  • L'une des conditions suivantes est vraie :
    • std:: add_rvalue_reference_t < From > n'est pas un type référence-vers-objet, ou
    • std:: add_rvalue_reference_t < From > est une référence rvalue vers un type non qualifié const, et l'état résultant de l'objet référencé par fun ( ) est valide mais non spécifié après l'une ou l'autre des expressions ci-dessus ; ou
    • l'objet référencé par fun ( ) n'est pas modifié par l'une ou l'autre des expressions ci-dessus.

Préservation de l'égalité

Les expressions déclarées dans les requires expressions des concepts de la bibliothèque standard doivent être equality-preserving (sauf indication contraire).

Références

  • Norme C++23 (ISO/CEI 14882:2024) :
  • 18.4.4 Concept convertible_to [concept.convertible]
  • Norme C++20 (ISO/CEI 14882:2020) :
  • 18.4.4 Concept convertible_to [concept.convertible]

Voir aussi

vérifie si un type peut être converti en un autre type
(modèle de classe)