31 #ifndef LEDGER_CORE_EITHER_HPP 32 #define LEDGER_CORE_EITHER_HPP 37 #include "Exception.hpp" 42 template<
typename Left,
typename Right>
53 Either(
const Right &right) {
63 _left = std::move(either._left);
64 _right = std::move(either._right);
69 _right = either._right;
74 _right = either._right;
79 _right = either._right;
95 bool isRight()
const {
96 return _right.nonEmpty();
100 return _left.nonEmpty();
107 const Right &operator*()
const {
108 return _right.getValue();
111 const Right *operator->()
const {
112 return &_right.getValue();
116 return _left.getValue();
120 return _right.getValue();
123 const Left &getLeft()
const {
124 return _left.getValue();
127 const Right &getRight()
const {
128 return _right.getValue();
131 operator Left()
const {
132 return _left.getValue();
135 operator Right()
const {
136 return _right.getValue();
144 T fold(std::function<T (
const Left&)> f1, std::function<T (
const Right&)> f2)
const {
146 return f2(getRight());
148 return f1(getLeft());
160 #endif //LEDGER_CORE_EITHER_HPP Definition: Either.hpp:43
Definition: Account.cpp:8