Skip to content

2.0.0 (Stable)

Latest

Choose a tag to compare

@EienMiku EienMiku released this 29 Jan 18:04
· 26 commits to main since this release
2aa4d72

Passes all tests from stl / libstdcxx / libcxx except p3913, and some strange test cases in libstdcxx (which behave differently from those on clang with libstdcxx or libcxx).

Changes

fix incorrect prohibit type concept definition;
fix incorrect prohibit type concept from constraints to static_assert;
add macro and concept detect to reject some overloads where the standard library does not support option<T&>;
fix the order of constraint of option(U&&);
add missing constraint to option(option<U>&&)
add constraint to option(const option<U>&) option(option<U>&&) to prevent from wrongly selected;
fix incorrect std::move on storage.get();
fix mandate and cond of if in or_else;
add a base for option<T&> to remove iterator type for N/A Ts;
add missing ctor for fwd monad in option<T&>;
add missing friend template class in option<T&>;
fix incorrect constraint of option<T&>::emplace;
remove redundant reset in option<T&>::emplace;
fix incorrect return type of option<T&>::begin / end;
add missing constraints for option<T&>::begin / end;
add missing constraints for option<T&>::value_or and related fns;
fix incorrect ctor calling in option<T&>::transform and related fns;
add a private constant to prevent calling the first template of make_option and related fn with explicit template argument;
add missing requires to order and eq operators;
replace ternary operator with if to impl lwg 4370;
add a constraint for <=> to prevent recursive <=> check;
add missing constraints for make_option and related fns;