20 General utilities library [utilities]

20.14 Function objects [function.objects]

20.14.5 Class template reference_­wrapper [refwrap]

20.14.5.1 Constructors and destructor [refwrap.const]

template<class U> constexpr reference_wrapper(U&& u) noexcept(see below);
Let FUN denote the exposition-only functions
void FUN(T&) noexcept;
void FUN(T&&) = delete;
Constraints: The expression FUN(declval<U>()) is well-formed and is_­same_­v<remove_­cvref_­t<U>, reference_­wrapper> is false.
Effects: Creates a variable r as if by T& r = std​::​forward<U>(u), then constructs a reference_­wrapper object that stores a reference to r.
Remarks: The expression inside noexcept is equivalent to noexcept(FUN(declval<U>())).
constexpr reference_wrapper(const reference_wrapper& x) noexcept;
Effects: Constructs a reference_­wrapper object that stores a reference to x.get().