1212#ifndef NODEPP_EXPECTED
1313#define NODEPP_EXPECTED
1414
15- # include " any.h "
15+ /* ──────────────────────────────────────────────────────────────────────────── */
1616
1717namespace nodepp {
1818template <typename T, typename E> struct expected_t {
1919protected:
2020
21- struct NODE { any_t data; bool has; }; ptr_t <NODE> obj;
21+ struct NODE { T data; E error ; bool has; }; ptr_t <NODE> obj;
2222
2323public:
2424
25- expected_t ( const T& val ) noexcept : obj( new NODE() ) { obj->has = true ; obj->data = val; }
26-
27- expected_t ( const E& err ) noexcept : obj( new NODE() ) { obj->has = false ; obj->data = err; }
25+ expected_t ( const T& val ) noexcept : obj( new NODE() ) { obj->has = true ; obj->data = val; }
26+ expected_t ( const E& err ) noexcept : obj( new NODE() ) { obj->has = false ; obj->error = err; }
2827
2928 /* ─······································································─*/
3029
@@ -33,16 +32,20 @@ template <typename T, typename E> struct expected_t {
3332
3433 /* ─······································································─*/
3534
36- T value () const { if ( !has_value () || !obj-> data . has_value () ) {
37- throw except_t (" expected does not have a value" );
38- } return obj->data . template as <T>() ; }
35+ T value () const { if ( !has_value () ) {
36+ throw except_t (" expected does not have a value" );
37+ } return obj->data ; }
3938
4039 /* ─······································································─*/
4140
42- E error () const { if ( has_value () || !obj-> data . has_value () ) {
43- throw except_t (" expected does not have a value" );
44- } return obj->data . template as <E>() ; }
41+ E error () const { if ( has_value () ) {
42+ throw except_t (" expected does not have a value" );
43+ } return obj->error ; }
4544
4645};}
4746
48- #endif
47+ /* ────────────────────────────────────────────────────────────────────────────*/
48+
49+ #endif
50+
51+ /* ────────────────────────────────────────────────────────────────────────────*/
0 commit comments