diff --git a/src/core/string_or_view.h b/src/core/string_or_view.h index a12406344ac7..ab2b16361ba7 100644 --- a/src/core/string_or_view.h +++ b/src/core/string_or_view.h @@ -65,6 +65,10 @@ class StringOrView { val_ = std::string{std::get(val_)}; } + bool empty() const { + return visit([](const auto& s) { return s.empty(); }, val_); + } + private: std::variant val_; }; diff --git a/src/server/search/doc_index.h b/src/server/search/doc_index.h index 1bceb75cec21..6b5a2da6cf7d 100644 --- a/src/server/search/doc_index.h +++ b/src/server/search/doc_index.h @@ -110,7 +110,7 @@ class SearchField { private: bool HasNewAlias() const { - return new_alias_.has_value(); + return !new_alias_.empty(); } std::string_view NameView() const { @@ -118,13 +118,13 @@ class SearchField { } std::string_view AliasView() const { - return new_alias_.value().view(); + return new_alias_.view(); } private: StringOrView name_; bool is_short_name_; - std::optional new_alias_; + StringOrView new_alias_; }; using SearchFieldsList = std::vector;