Iros
 
Loading...
Searching...
No Matches
status_code.h
Go to the documentation of this file.
1#pragma once
2
6
7namespace di::vocab {
8template<concepts::DerivedFrom<StatusCodeDomain> T>
10private:
12
13public:
14 using Domain = T;
16
17 StatusCode() = default;
18 StatusCode(StatusCode const&) = default;
19 StatusCode(StatusCode&&) = default;
20
21 template<typename U, typename... Args>
24 constexpr StatusCode(U&& v, Args&&... args)
25 : StatusCode(into_status_code(util::forward<U>(v), util::forward<Args>(args)...)) {}
26
27 template<typename... Args>
28 requires(concepts::ConstructibleFrom<Value, Args...>)
29 constexpr explicit StatusCode(InPlace, Args&&... args)
30 : Base(in_place, util::addressof(Domain::get()), util::forward<Args>(args)...) {}
31
32 template<typename U, typename... Args>
34 constexpr explicit StatusCode(InPlace, std::initializer_list<U> list, Args&&... args)
35 : Base(in_place, util::addressof(Domain::get()), list, util::forward<Args>(args)...) {}
36
37 constexpr explicit StatusCode(Value const& value)
39 : Base(in_place, util::addressof(Domain::get()), value) {}
40
41 constexpr explicit StatusCode(Value&& value) : Base(in_place, util::addressof(Domain::get()), util::move(value)) {}
42
43 auto operator=(StatusCode const&) -> StatusCode& = default;
44 auto operator=(StatusCode&&) -> StatusCode& = default;
45
46 ~StatusCode() = default;
47
48 constexpr auto message() const {
49 if (!this->empty()) {
50 return this->domain().do_message(*this);
51 }
52 return container::ErasedString(u8"[invalid status code]");
53 }
54
55private:
56 template<typename Domain>
57 friend class StatusCode;
58};
59}
Definition erased_string.h:21
constexpr StatusCode(U &&v, Args &&... args)
Definition status_code.h:24
constexpr StatusCode(InPlace, std::initializer_list< U > list, Args &&... args)
Definition status_code.h:34
meta::StatusCodeDomainValue< Domain > Value
Definition status_code.h:15
constexpr StatusCode(Value &&value)
Definition status_code.h:41
StatusCode(StatusCode const &)=default
constexpr StatusCode(Value const &value)
Definition status_code.h:37
friend class StatusCode
Definition status_code.h:57
StatusCode(StatusCode &&)=default
T Domain
Definition status_code.h:14
auto operator=(StatusCode const &) -> StatusCode &=default
constexpr auto message() const
Definition status_code.h:48
constexpr StatusCode(InPlace, Args &&... args)
Definition status_code.h:29
auto operator=(StatusCode &&) -> StatusCode &=default
Definition status_code_storage.h:13
constexpr auto domain() const -> Domain const &
Definition status_code_storage.h:21
constexpr auto value() &-> Value &
Definition status_code_storage.h:32
Definition operations.h:11
Definition into_status_code.h:26
Definition operations.h:34
Definition util.h:59
detail::StatusCodeDomainValueHelper< T >::Type StatusCodeDomainValue
Definition status_code_domain_value.h:16
__UINT8_TYPE__ u8
Definition integers.h:9
Definition vocab.h:96
Definition lazy.h:165
constexpr auto into_status_code
Definition into_status_code.h:17
constexpr auto get(T &&value) -> decltype(auto)
Definition get.h:8
constexpr auto empty
Definition empty.h:45
constexpr auto in_place
Definition in_place.h:8
Definition in_place.h:4