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

Created with MrDocs