Maybe Result is a return value wrapper that can contain either a value
T or error E. It borrows ideas heavily from the C++17's
std::experimental::optional, Rust's std::result and
the std::expected that was proposed but not yet accepted
for C++17.
Has a value for error instead of nullopt.
It does not require the error to be an exception, and does not fall back to
exceptions. All values must be checked, similar to std::experimental::optional.
This is header-only library. We recommend to add src to included directories,
so that the include would be:
#include <maybe/result.hpp>
A C++ compiler shat supports C++14 is required.
You can use -std=c++14 flag for sufficiently recent versions of
GCC (4.9) or CLANG (3.7).
Warning! Library is highly experimental and is not guaranteed to work.
Library requires std::experimental::optional implementation, location
of which can be specified with -DEXPERIMENTAL_OPTIONAL_INCLUDE flag:
cmake -DEXPERIMENTAL_OPTIONAL_INCLUDE=../path/to/optional .
make tests && ./tests/tests
There is a script that does this automatically:
./dev/run-tests.sh
In addition to this, you can run tests on all supported compilers using docker:
./dev/docker-run-tests.sh
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.