#ifndef CONDITION_VALUE_HPP #define CONDITION_VALUE_HPP #include "types.hpp" #include namespace matador::condition { class value final { public: value() = default; template value(const Type& value) : value_(value) {} value(const value &x) = default; value& operator=(const value &x) = default; value(value &&x) noexcept = default; value& operator=(value &&x) noexcept = default; ~value() = default; template std::optional as() const { if (std::holds_alternative(value_)) { return std::get(value_); } return std::nullopt; } template bool is() const { return std::holds_alternative(value_); } [[nodiscard]] std::string str() const; private: basic_types value_; }; } #endif //CONDITION_VALUE_HPP