std::common_with - cppreference.com
De cppreference.com
| Definido en el archivo de encabezado |
||
|
|
(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,
std::common_type_t<T, U>(t1)es igual astd::common_type_t<T, U>(t2)si y solo sit1es igual at2; ystd::common_type_t<T, U>(u1)es igual astd::common_type_t<T, U>(u2)si y solo siu1es igual au2.
En otras palabras, la conversión al tipo común debe conservar la igualdad.
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.