Concept matching types with optional-like semantics (has_value/value), such as std::optional, folly::Optional, and Thrift optional fields.
Declared in <folly/GetRefUtil.h>
template<typename T>
concept IsOptionalLike = requires {
typename T::value_type;
} && requires(const T t) {
{ *t } -> std::convertible_to<typename T::value_type>;
{ t.has_value() } -> std::same_as<bool>;
};