Espacios de nombres
Variantes
Acciones

comprobable-booleano

De cppreference.com
< cpp‎ | concepts
template<class B>

concept __comprobable_booleano_impl =          // solo exposición

    std::convertible_to<B, bool>;
(desde C++20)
template<class B>

concept comprobable-booleano =                 // solo exposición
    __comprobable_booleano_impl<B> &&
    requires (B&& b) {
        { !std::forward<B>(b) } -> __comprobable_booleano_impl

    };
(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*.