template<class T>
concept boolean-testable-impl = convertible_to<T, bool>; // exposition only
template<class T>
concept boolean-testable = // exposition only
boolean-testable-impl<T> && requires(T&& t) {
{ !std::forward<T>(t) } -> boolean-testable-impl;
};