MCPcopy Create free account
hub / github.com/boostorg/leaf / error_result

Class error_result

include/boost/leaf/result.hpp:159–201  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

157 result_discriminant what_;
158
159 struct error_result
160 {
161 error_result( error_result && ) = default;
162 error_result( error_result const & ) = delete;
163 error_result & operator=( error_result const & ) = delete;
164
165 result & r_;
166
167 error_result( result & r ) noexcept:
168 r_(r)
169 {
170 }
171
172 template <class U>
173 operator result<U>() noexcept
174 {
175 result_discriminant const what = r_.what_;
176 switch(auto k = what.kind())
177 {
178 case result_discriminant::val:
179 return result<U>(error_id());
180 case result_discriminant::err_id_capture_list:
181#if BOOST_LEAF_CFG_CAPTURE
182 return result<U>(what.get_error_id().value(), std::move(r_.cap_));
183#else
184 BOOST_LEAF_ASSERT(0); // Possible ODR violation.
185#endif
186 default:
187 BOOST_LEAF_ASSERT(k == result_discriminant::err_id);
188 (void) k;
189 case result_discriminant::err_id_zero:
190 return result<U>(what.get_error_id());
191 }
192 }
193
194 operator error_id() const noexcept
195 {
196 result_discriminant const what = r_.what_;
197 return what.kind() == result_discriminant::val?
198 error_id() :
199 what.get_error_id();
200 }
201 };
202
203 void destroy() const noexcept
204 {

Callers

nothing calls this directly

Calls 4

kindMethod · 0.80
error_idClass · 0.70
valueMethod · 0.45
get_error_idMethod · 0.45

Tested by

no test coverage detected