31#ifndef ETL_RESULT_INCLUDED
32#define ETL_RESULT_INCLUDED
41#if ETL_CPP11_SUPPORTED
48 template <
typename TValue,
typename TError>
53 typedef TValue value_type;
54 typedef TError error_type;
64 result(
const result& other)
72 result(result&& other)
80 result(
const TValue& value)
88 result(TValue&& value)
89 :
data(etl::move(value))
96 result(
const TError& error)
104 result(TError&& error)
105 :
data(etl::move(error))
112 result& operator=(
const result& other)
121 result& operator=(result&& other)
123 data = etl::move(other.data);
130 result& operator=(
const TValue& value)
139 result& operator=(TValue&& value)
141 data = etl::move(value);
148 result& operator=(
const TError& error)
157 result& operator=(TError&& error)
159 data = etl::move(error);
166 bool has_value()
const
168 return (
data.index() == 0U);
174 bool is_value()
const
182 bool is_error()
const
191 const TValue& value()
const
209 const TError& error()
const
225 etl::variant<TValue, TError>
data;
232 template <
typename TError>
233 class result<void, TError>
237 typedef void value_type;
238 typedef TError error_type;
248 result(
const result& other)
256 result(result&& other)
264 result(
const TError& error)
272 result(TError&& error)
273 :
data(etl::move(error))
280 result& operator=(
const TError& error)
289 result& operator=(TError&& error)
291 data = etl::move(error);
298 bool has_value()
const
300 return !
data.has_value();
306 bool is_value()
const
314 bool is_error()
const
323 const TError& error()
const
334 return etl::move(
data.value());
339 etl::optional<TError>
data;
346 template <
typename TValue>
347 class result<TValue, void>
359 result(
const result& other)
367 result(result&& other)
375 result(
const TValue& value)
383 result(TValue&& value)
384 :
data(etl::move(value))
391 result& operator=(
const TValue& value)
400 result& operator=(TValue&& value)
402 data = etl::move(value);
409 bool has_value()
const
411 return data.has_value();
417 bool is_value()
const
425 bool is_error()
const
434 const TValue& value()
const
445 return etl::move(
data.value());
450 etl::optional<TValue>
data;
ETL_CONSTEXPR TContainer::pointer data(TContainer &container)
Definition iterator.h:1470
T & get(array< T, Size > &a)
Definition array.h:1158