Namespaces
Variants

std:: convertible_to

From cppreference.net
Definido en el encabezado <concepts>
template < class From, class To >

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

} ;
(desde C++20)

El concepto convertible_to < From, To > especifica que una expresión del mismo tipo y categoría de valor que aquellos de std:: declval < From > ( ) puede convertirse implícita y explícitamente al tipo To , y las dos formas de conversión producen resultados iguales.

Contenidos

Requisitos semánticos

convertible_to < From, To > se modela solo si, dada una función fun de tipo std:: add_rvalue_reference_t < From > ( ) tal que la expresión fun ( ) es que preserva la igualdad ,

  • O bien
    • To no es un tipo de objeto ni un tipo de referencia a objeto, o
    • static_cast < To > ( fun ( ) ) es igual a [ ] ( ) - > To { return fun ( ) ; } ( ) , y
  • Una de las siguientes afirmaciones es verdadera:
    • std:: add_rvalue_reference_t < From > no es un tipo de referencia a objeto, o
    • std:: add_rvalue_reference_t < From > es una referencia a valor derecho a un tipo no calificado como const, y el estado resultante del objeto referenciado por fun ( ) es válido pero no especificado después de cualquiera de las expresiones anteriores; o
    • el objeto referido por fun ( ) no es modificado por ninguna de las expresiones anteriores.

Preservación de la igualdad

Las expresiones declaradas en las requires expressions de los conceptos de la biblioteca estándar deben ser equality-preserving (excepto cuando se indique lo contrario).

Referencias

  • Estándar C++23 (ISO/IEC 14882:2024):
  • 18.4.4 Concepto convertible_to [concept.convertible]
  • Estándar C++20 (ISO/IEC 14882:2020):
  • 18.4.4 Concepto convertible_to [concept.convertible]

Véase también

verifica si un tipo puede ser convertido a otro tipo
(plantilla de clase)