[refwrap.const] (original) (raw)

20 General utilities library [utilities]

20.14 Function objects [function.objects]

20.14.6 Class template reference_­wrapper [refwrap]

20.14.6.2 Constructors and destructor [refwrap.const]

template<class U> constexpr reference_wrapper(U&& u) noexcept(_see below_);

Let FUN denote the exposition-only functionsvoid FUN(T&) noexcept;void FUN(T&&) = delete;

Constraints: The expression FUN(declval<U>()) is well-formed andis_­same_­v<remove_­cvref_­t<U>, reference_­wrapper> is false.

Effects: Creates a variable ras if by T& r = std​::​forward<U>(u), then constructs a reference_­wrapper object that stores a reference to r.

Remarks: The expression inside noexceptis 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().