diff options
Diffstat (limited to 'libjsonpb/parse/include/jsonpb/error_or.h')
-rw-r--r-- | libjsonpb/parse/include/jsonpb/error_or.h | 67 |
1 files changed, 33 insertions, 34 deletions
diff --git a/libjsonpb/parse/include/jsonpb/error_or.h b/libjsonpb/parse/include/jsonpb/error_or.h index 66e22969..3fd3e997 100644 --- a/libjsonpb/parse/include/jsonpb/error_or.h +++ b/libjsonpb/parse/include/jsonpb/error_or.h @@ -14,7 +14,6 @@ * limitations under the License. */ - #pragma once #include <string> @@ -27,45 +26,45 @@ namespace jsonpb { template <typename T> struct ErrorOr { - template <class... Args> - explicit ErrorOr(Args&&... args) : data_(kIndex1, std::forward<Args>(args)...) {} - T& operator*() { - CHECK(ok()); - return *std::get_if<1u>(&data_); - } - const T& operator*() const { - CHECK(ok()); - return *std::get_if<1u>(&data_); - } - T* operator->() { - CHECK(ok()); - return std::get_if<1u>(&data_); - } - const T* operator->() const { - CHECK(ok()); - return std::get_if<1u>(&data_); - } - const std::string& error() const { - CHECK(!ok()); - return *std::get_if<0u>(&data_); - } - bool ok() const { return data_.index() != 0; } - static ErrorOr<T> MakeError(const std::string& message) { - return ErrorOr<T>(message, Tag::kDummy); - } + template <class... Args> + explicit ErrorOr(Args&&... args) : data_(kIndex1, std::forward<Args>(args)...) {} + T& operator*() { + CHECK(ok()); + return *std::get_if<1u>(&data_); + } + const T& operator*() const { + CHECK(ok()); + return *std::get_if<1u>(&data_); + } + T* operator->() { + CHECK(ok()); + return std::get_if<1u>(&data_); + } + const T* operator->() const { + CHECK(ok()); + return std::get_if<1u>(&data_); + } + const std::string& error() const { + CHECK(!ok()); + return *std::get_if<0u>(&data_); + } + bool ok() const { return data_.index() != 0; } + static ErrorOr<T> MakeError(const std::string& message) { + return ErrorOr<T>(message, Tag::kDummy); + } - private: - enum class Tag { kDummy }; - static constexpr std::in_place_index_t<0> kIndex0{}; - static constexpr std::in_place_index_t<1> kIndex1{}; - ErrorOr(const std::string& msg, Tag) : data_(kIndex0, msg) {} + private: + enum class Tag { kDummy }; + static constexpr std::in_place_index_t<0> kIndex0{}; + static constexpr std::in_place_index_t<1> kIndex1{}; + ErrorOr(const std::string& msg, Tag) : data_(kIndex0, msg) {} - std::variant<std::string, T> data_; + std::variant<std::string, T> data_; }; template <typename T> inline ErrorOr<T> MakeError(const std::string& message) { - return ErrorOr<T>::MakeError(message); + return ErrorOr<T>::MakeError(message); } } // namespace jsonpb |