Namespaces
Variants

boolean-testable

From cppreference.net
template < class B >
concept __boolean_testable_impl = std:: convertible_to < B, bool > ;
(1) (desde C++20)
( solo para exposición* )
template < class B >

concept boolean - testable =
__boolean_testable_impl < B > &&
requires ( B && b ) {
{ ! std:: forward < B > ( b ) } - > __boolean_testable_impl ;

} ;
(2) (desde C++20)
( solo para exposición* )

El concepto de solo exposición boolean-testable especifica los requisitos para expresiones que son convertibles a bool y para las cuales los operadores lógicos tienen el comportamiento usual (incluyendo evaluación de cortocircuito ), incluso para dos tipos diferentes de boolean-testable .

Formalmente, para modelar el concepto de solo exposición __boolean_testable_impl , el tipo no debe definir ningún miembro operator && y operator || , y ningún operador no-miembro viable operator && y operator || puede ser visible mediante búsqueda dependiente de argumentos . Adicionalmente, dada una expresión e tal que decltype ( ( e ) ) es B , boolean-testable se modela solo si bool ( e ) == ! bool ( ! e ) .

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).

Notas

Ejemplos de tipos boolean-testable incluyen bool , std::true_type , std:: bitset < N > :: reference , e int * .

Referencias

  • Estándar C++23 (ISO/IEC 14882:2024):
  • 18.5.2 Capacidad de prueba booleana [concept.booleantestable]
  • Estándar C++20 (ISO/IEC 14882:2020):
  • 18.5.2 Boolean testability [concept.booleantestable]