folly::IsOptionalLike

Concept matching types with optional-like semantics (has_value/value), such as std::optional, folly::Optional, and Thrift optional fields.

Synopsis

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>;
};