Backporting std::expected to C++17.
Implemented C++ Standard Proposals:
-  P0323R12 <expected>
- P2505R5 Monadic Functions For expected
-  P2549R1 std::unexpected<E>should haveerror()as member accessor
Implemented LWG Issues:
-  LWG-3836 std::expected<bool, E1>conversion constructorexpected(const expected<U, G>&)should take precedence overexpected(U&&)withoperator bool
-  LWG-3843 std::expected<T,E>::value() &assumesEis copy constructible
-  LWG-3940 std::expected<void, E>::value()also needsEto be copy constructible
-  LWG-4026 Assignment operators of std::expectedshould propagate triviality
-  LWG-3877 incorrect constraints on const-qualified monadic overloads for std::expected
- LWG-3886 Monad mo' problems
Enhancements:
- Enhanced noexcept (covered by tests from MSVC's STL)
Any compiler that supports C++17 should work.
Higher language standards are also supported, which can provide benefits such as enhanced constexpr capabilities.
List of known compiler supported:
- MSVC v142 and later
- GCC 8 and later
Feedbacks are welcome.
Catch2 is required to build the tests.
You may choose any preferred package manager to introduce the requirements. Here is a conan way.
# install the requirements
conan install . -s build_type=Debug -b missing
# configure, build and test with cmake
# ...- tl-expected, the original code base this library came from.
- MSVC's STL's massive, strong and robust tests.