Namespaces
Variants

boolean-testable

From cppreference.net
template < class B >
concept __boolean_testable_impl = std:: convertible_to < B, bool > ;
(1) (depuis C++20)
( exposition uniquement* )
template < class B >

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

} ;
(2) (depuis C++20)
( exposition uniquement* )

Le concept d'exposition uniquement boolean-testable spécifie les exigences pour les expressions qui sont convertibles en bool et pour lesquelles les opérateurs logiques ont le comportement habituel (incluant l'évaluation en court-circuit ), même pour deux types boolean-testable différents.

Formellement, pour modéliser le concept d'exposition uniquement __boolean_testable_impl , le type ne doit pas définir de membre operator && et operator || , et aucun opérateur non-membre viable operator && et operator || ne doit être visible par la recherche dépendante des arguments . De plus, étant donné une expression e telle que decltype ( ( e ) ) est B , boolean-testable est modélisé seulement si bool ( e ) == ! bool ( ! e ) .

Préservation de l'égalité

Les expressions déclarées dans les requires expressions des concepts de la bibliothèque standard doivent être equality-preserving (sauf indication contraire).

Notes

Exemples de types boolean-testable incluent bool , std::true_type , std:: bitset < N > :: reference , et int * .

Références

  • Norme C++23 (ISO/CEI 14882:2024) :
  • 18.5.2 Testabilité booléenne [concept.booleantestable]
  • Norme C++20 (ISO/CEI 14882:2020) :
  • 18.5.2 Testabilité booléenne [concept.booleantestable]