Lines Matching refs:E
55 template <typename T, typename E, bool DefineDestructor>
60 template <typename T, typename E>
61 struct expected_data<T, E, /*DefineDestructor*/true> {
84 constexpr const E& error() const {
88 constexpr E& error() {
95 E error_;
110 error_.~E();
117 noexcept(E(std::move(other.error_)))
124 new (&error_) E(std::move(other.error_));
136 new (&error_) E(other.error_);
151 error_.~E();
159 new (&error_) E(other.error_);
179 error_.~E();
187 new (&error_) E(std::move(other.error_));
209 template <typename T, typename E>
210 struct expected_data<T, E, /*DefineDestructor*/false> {
231 constexpr const E& error() const {
235 constexpr E& error() {
242 E error_;
252 template <typename T, typename E>
254 expected_data<T, E,
255 !(std::is_trivially_destructible_v<T> && std::is_trivially_destructible_v<E>) >;
258 template <typename E>
262 template <typename T, typename E>
270 constexpr expected(const E& error) : data_{error, detail::expected_tag_error{}} {}
271 constexpr expected(E&& error) : data_{std::move(error), detail::expected_tag_error{}} {}
273 template <typename G = E>
276 template <typename G = E>
323 constexpr E& error() {
328 constexpr const E& error() const {
335 detail::expected_pick_data_t<T, E> data_;
357 template <typename E>
360 constexpr explicit unexpected(const E& error) : error_{error} {}
361 constexpr explicit unexpected(E&& error) : error_{std::move(error)} {}
362 constexpr const E& value() const& { return error_; }
363 constexpr E& value() & { return error_; }
364 constexpr E&& value() && { return std::move(error_); }
365 constexpr E const&& value() const&& { return std::move(error_); }
367 E error_;
370 template <class E>
371 constexpr bool operator==(const unexpected<E>& x, const unexpected<E>& y) {
375 template <class E>
376 constexpr bool operator!=(const unexpected<E>& x, const unexpected<E>& y) {