comprobable-booleano
template<class B> concept __comprobable_booleano_impl = // solo exposición |
(desde C++20) | |
template<class B> concept comprobable-booleano = // solo exposición |
(desde C++20) | |
El concepto de solo exposición comprobable-booleano
(comprobable-booleano) especifica los requisitos para expresiones que son convertibles a bool y para las que los operadores lógicos tienen el comportamiento habitual (incluyendo cortocircuito), incluso para dos tipos comprobable-booleano
distintos.
Formalmente, para modelar el concepto de solo exposición __comprobable_booleano_impl
, el tipo no debe definir ningún miembro operator&&
ni operator||
, y ningún operador no miembro operator&&
viable ni operator||
puede ser visible a la búsqueda dependiente de argumento. Adicionalmente, la expresión dada e
tal que decltype((e)) es B
, modela a comprobable-booleano
solamente si bool(e) == !bool(!e).
[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.
A menos que se indique de otra manera, cada expresión utilizada en una expresión-requiere se requiere sea conservadora de igualdad y estable, y la evaluación de la expresión puede solamente modificar sus operandos no constantes. Los operandos que son constantes no deben ser modificados.
[editar] Notas
Ejemplos de tipos comprobable-booleano
incluyen bool, std::true_type, std::bitset<N>::reference, e int*.