5 #ifndef VCCC_RANGES_NON_PROPAGATING_CACHE_HPP
6 #define VCCC_RANGES_NON_PROPAGATING_CACHE_HPP
21 struct constructible_from_deref : std::false_type {};
22 template<
typename T,
typename U>
23 struct constructible_from_deref<T, U, true> : constructible_from<T, decltype(*std::declval<U>())> {};
38 using base::operator*;
39 using base::operator->;
40 using base::operator bool;
a wrapper that may or may not hold an object
Definition: optional.h:46
constexpr value_type value_or(U &&default_value) const &
Definition: optional.h:280
value_type & emplace()
Definition: optional.h:421
constexpr auto and_then(F &&f) &
Definition: optional.h:305
constexpr auto transform(F &&f) &
Definition: optional.h:340
constexpr bool has_value() const noexcept
Definition: optional.h:249
constexpr value_type & value() &
Definition: optional.h:255
void swap(optional &other) noexcept(std::is_nothrow_move_constructible< value_type >::value &&vccc::is_nothrow_swappable< value_type >::value)
Definition: optional.h:393
constexpr optional or_else(F &&f) const &
Definition: optional.h:379
Definition: non_propagating_cache.hpp:32
constexpr non_propagating_cache(non_propagating_cache &&other) noexcept
Definition: non_propagating_cache.hpp:54
constexpr non_propagating_cache & operator=(const non_propagating_cache &other) noexcept
Definition: non_propagating_cache.hpp:58
constexpr T & emplace_deref(const I &i)
Definition: non_propagating_cache.hpp:72
constexpr non_propagating_cache & operator=(non_propagating_cache &&other) noexcept
Definition: non_propagating_cache.hpp:65
constexpr non_propagating_cache(const non_propagating_cache &) noexcept
Definition: non_propagating_cache.hpp:52
non_propagating_cache()=default
std::enable_if_t< std::is_object< T >::value, T * > addressof(T &t) noexcept
Definition: addressof.hpp:33
Definition: directory.h:12
constexpr VCCC_INLINE_OR_STATIC detail::element_niebloid< 1 > value
Definition: key_value.hpp:35