Spec-Zone.ru › C++

boolean-testable

template< class B >
concept __boolean_testable_impl = std::convertible_to<B, bool>;
(только для иллюстрации*)
template< class B >
concept boolean-testable =
    __boolean_testable_impl<B> &&
    requires (B&& b) {
        { !std::forward<B>(b) } -> __boolean_testable_impl;
    };
(только для иллюстрации*)

Концепция «только для иллюстрации» boolean-testable определяет требования к выражениям, преобразуемым к bool и для которых логические операторы ведут себя привычным образом (включая короткое замыкание), даже для двух разных типов boolean-testable.

Формально, для моделирования концепции «только для иллюстрации» __boolean_testable_impl, тип не должен определять какие-либо члены operator&& и operator||, и никакие доступные нечлены operator&& и operator|| не должны быть видны по поиску с учётом аргументов. Кроме того, для выражения e, такого что decltype((e)) является B, boolean-testable моделируется только если bool(e) == !bool(!e).

Сохранение равенства

Выражения, объявленные в выражениях requires стандартных концепций, должны быть сохраняющими равенство (кроме случаев, когда указано обратное).

Примечания

Примеры типов boolean-testable включают bool, std::true_type, std::bitset<N>::reference, и int*.

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/concepts/boolean-testable

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API