3 #include <ozo/core/nullable.h>
4 #include <ozo/core/concept.h>
5 #include <ozo/detail/functional.h>
7 #include <boost/hana/core/when.hpp>
11 namespace hana = boost::hana;
38 template <
typename T,
typename When = hana::when<true>>
57 constexpr decltype(
auto)
unwrap(T&& v) noexcept(
58 noexcept(
unwrap_impl<std::decay_t<T>>::apply(std::forward<T>(v)))) {
63 struct unwrap_impl<std::reference_wrapper<T>> {
64 template <
typename Ref>
65 constexpr
static decltype(
auto) apply(Ref&& v) noexcept {
93 #ifdef OZO_DOCUMENTATION
96 using type = std::decay_t<decltype(ozo::unwrap(std::declval<T>()))>;
106 template <
typename T>