blob: 7b027a8d7765d3d68462af5617eb12d32f566520 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#ifndef KSTD_RESULT_HPP
#define KSTD_RESULT_HPP
#include <kstd/system_error.hpp>
#include <expected>
#include <type_traits>
#include <utility>
namespace kstd
{
template<typename SuccessType>
using result = std::expected<SuccessType, error_code>;
template<typename SuccessType>
requires(!std::is_void_v<SuccessType>)
constexpr auto inline success(SuccessType && value) -> result<std::remove_cvref_t<SuccessType>>
{
return result<std::remove_cvref_t<SuccessType>>{std::in_place, std::forward<SuccessType>(value)};
}
constexpr auto inline success() -> result<void>
{
return result<void>{std::in_place};
}
constexpr auto inline failure(error_code error) -> std::unexpected<error_code>
{
return std::unexpected(error);
}
} // namespace kstd
#endif
|