Espacios de nombres
Variantes
Acciones

std::common_with

De cppreference.com
< cpp‎ | concepts
Definido en el archivo de encabezado <concepts>
template<class T, class U>

concept common_with =
  std::same_as<std::common_type_t<T, U>, std::common_type_t<U, T>>&&
  requires {
    static_cast<std::common_type_t<T, U>>(std::declval<T>());
    static_cast<std::common_type_t<T, U>>(std::declval<U>());
  }&&
  std::common_reference_with<
    std::add_lvalue_reference_t<const T>,
    std::add_lvalue_reference_t<const U>>&&
  std::common_reference_with<
    std::add_lvalue_reference_t<std::common_type_t<T, U>>,
    std::common_reference_t<
      std::add_lvalue_reference_t<const T>,

      std::add_lvalue_reference_t<const U>>>;
(desde C++20)

El concepto common_with<T, U> especifica que dos tipos T and U comparten un tipo común (computado por std::common_type_t) al cual ambos pueden ser convertidos.

T y U modelan common_with<T, U> solamente si, dadas las expresiones conservadoras de igualdad t1, t2, u1 y u2 tales que decltype((t1)) y decltype((t2)) son ambas T y decltype((u1)) y decltype((u2)) son ambas U,

En otras palabras, la conversión al tipo común debe conservar la igualdad.

[editar]Conservación de la igualdad

Una expresión es conservadora de igualdad si resulta en salidas iguales dadas entradas iguales.

  • Las entradas de una expresión consisten en sus operandos.
  • Las salidas de una expresión consisten en su resultado y todos los operandos modificados por la expresión (si es que los hay).

Cada expresión que se requiere sea conservadora de igualdad, se requiere además que sea estable: dos evaluaciones de tal expresión con los mismos objetos de entrada debe tener salidas iguales si no se encuentra alguna modificación interventora de esos objetos de entrada.

[editar] Véase también

Deduce el tipo del resultado de una expresión aritmética mixta
(plantilla de clase)[editar]
Determina el tipo común de referencia de un grupo de tipos
(plantilla de clase)[editar]
Especifica que dos tipos comparte un tipo de referencia común.
(concepto)[editar]
close