7 #include <hilti/rt/extension-points.h> 8 #include <hilti/rt/util.h> 12 namespace detail::adl {
14 inline std::string
to_string(std::optional<T> x, adl::tag ) {
22 struct Unset :
public std::exception {};
25 inline auto& value(
const std::optional<T>& t,
const char*
location) {
29 throw UnsetOptional(
"unset optional value", location);
33 inline auto& value(std::optional<T>& t,
const char* location) {
37 throw UnsetOptional(
"unset optional value", location);
41 inline auto& valueOrInit(std::optional<T>& t,
const T& default_) {
42 if ( ! t.has_value() )
49 inline auto& valueOrInit(std::optional<T>& t) {
50 if ( ! t.has_value() )
57 inline auto& tryValue(
const std::optional<T>& t) {
67 inline std::string detail::to_string_for_print<std::optional<std::string>>(
const std::optional<std::string>& x) {
68 return x ? *x :
"(not set)";
72 inline std::string detail::to_string_for_print<std::optional<std::string_view>>(
73 const std::optional<std::string_view>& x) {
74 return x ? std::string(*x) :
"(not set)";
83 inline auto operator<<(std::ostream& out, const std::optional<T>& x)
85 out << ::hilti::rt::to_string(x);
std::string to_string(T &&x)
Definition: extension-points.h:26
Definition: optional.h:79
Definition: optional.h:22
Definition: extension-points.h:12
Definition: location.h:94