5#ifndef INCLUDE_GUARD_ARENE_BASE_STDLIB_INCLUDE_STDLIB_DETAIL_REFERENCE_WRAPPER_HPP_
6#define INCLUDE_GUARD_ARENE_BASE_STDLIB_INCLUDE_STDLIB_DETAIL_REFERENCE_WRAPPER_HPP_
14#include "arene/base/constraints.hpp"
15#include "arene/base/functional/function_traits.hpp"
16#include "arene/base/functional/invoke.hpp"
17#include "arene/base/functional/is_noexcept_part_of_function_type.hpp"
18#include "arene/base/type_list/concat.hpp"
19#include "arene/base/type_list/type_list.hpp"
20#include "arene/base/type_traits/is_invocable.hpp"
21#include "stdlib/include/stdlib_detail/addressof.hpp"
22#include "stdlib/include/stdlib_detail/enable_if.hpp"
23#include "stdlib/include/stdlib_detail/forward.hpp"
24#include "stdlib/include/stdlib_detail/integral_constant.hpp"
25#include "stdlib/include/stdlib_detail/is_class.hpp"
26#include "stdlib/include/stdlib_detail/is_function.hpp"
27#include "stdlib/include/stdlib_detail/is_member_function_pointer.hpp"
28#include "stdlib/include/stdlib_detail/remove_pointer.hpp"
29#include "stdlib/include/stdlib_detail/remove_reference.hpp"
43template <
typename TypeList>
48template <
typename Arg>
58template <
typename Arg1,
typename Arg2>
199 : pointer_{addressof(to_wrap)} {}
208 auto get()
const noexcept -> T& {
return *pointer_; }
Add argument member types to reference wrapped functions and member function pointers....
Definition reference_wrapper.hpp:44
Forward member types first_argument_type and second_argument_type from a reference wrapped class cont...
Definition reference_wrapper.hpp:111
Forward member type result_type from a reference wrapped class containing that member type,...
Definition reference_wrapper.hpp:74
Forward member type argument_type from a reference wrapped class containing that member type,...
Definition reference_wrapper.hpp:92
Add member types to reference_wrapper based on the underlying wrapped type.
Definition reference_wrapper.hpp:134
wraps a reference in a copyable and assignable object
Definition reference_wrapper.hpp:178
reference_wrapper(T &&)=delete
Cannot be constructed from an rvalue reference.
auto get() const noexcept -> T &
Access the stored reference.
Definition reference_wrapper.hpp:208
reference_wrapper(T &to_wrap) noexcept
Construct a reference_wrapper around a given input. Wrapped object must have an lvalue reference addr...
Definition reference_wrapper.hpp:198
operator T&() const noexcept
Access the stored reference.
Definition reference_wrapper.hpp:215
Definition reference_wrapper.hpp:33
auto ref(T &&)=delete
Cannot create a reference_wrapper from an rvalue reference.
auto ref(T &to_wrap) noexcept -> reference_wrapper< T >
Create a type-deduced reference_wrapper.
Definition reference_wrapper.hpp:239
auto ref(reference_wrapper< T > other) noexcept -> reference_wrapper< T >
Create a type-deduced copy of a reference_wrapper.
Definition reference_wrapper.hpp:249
auto cref(T &&)=delete
Cannot create a reference_wrapper from an rvalue reference.
auto cref(reference_wrapper< T > other) noexcept -> reference_wrapper< T const >
Create a const type-deduced copy of a reference_wrapper.
Definition reference_wrapper.hpp:276
auto cref(T &to_wrap) noexcept -> reference_wrapper< T const >
Create a const type-deduced reference_wrapper.
Definition reference_wrapper.hpp:266
constexpr auto operator()(::arene::base::result< void, E > const &value) const noexcept(noexcept(hash< E >{}(std::declval< E const & >()))) -> std::size_t
Calculate the hash of a result.
Definition result.hpp:1827