/
githubmirror
/
PowerToys
Обзор
Документация
Войти
/
githubmirror
/
PowerToys
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/modules/Workspaces/WorkspacesLib/Result.h
53 строки
1 KB
Seraphima Zykova
[Workspaces] Handle admin windows repositioning. (#34965)
25 сен 2024, 12:13
Не верифицирован
25 сен 2024, 12:13
1e18e83
Код
Авторство
О чём код?
#pragma once #include <variant> template<typename T> class Ok { public: explicit constexpr Ok(T value) : value(std::move(value)) {} constexpr T&& get() { return std::move(value); } T value; }; template<typename T> class Error { public: explicit constexpr Error(T value) : value(std::move(value)) {} constexpr T&& get() { return std::move(value); } T value; }; template<typename OkT, typename ErrT> class Result { public: using VariantT = std::variant<Ok<OkT>, Error<ErrT>>; constexpr Result(Ok<OkT> value) : variant(std::move(value)) {} constexpr Result(Error<ErrT> value) : variant(std::move(value)) {} constexpr bool isOk() const { return std::holds_alternative<Ok<OkT>>(variant); } constexpr bool isError() const { return std::holds_alternative<Error<ErrT>>(variant); } constexpr OkT value() const { return std::get<Ok<OkT>>(variant).value; } constexpr ErrT error() const { return std::get<Error<ErrT>>(variant).value; } constexpr OkT&& getValue() { return std::get<Ok<OkT>>(variant).get(); } constexpr ErrT&& getError() { return std::get<Error<ErrT>>(variant).get(); } VariantT variant; };