std::reference_wrapper::reference_wrapper(3)

NAME
std::reference_wrapper::reference_wrapper - std::reference_wrapper::reference_wrapper

Synopsis
   template< class U >
   reference_wrapper( U&& x ) noexcept(/*see (until C++20)
   below*/) ;
   template< class U >
   constexpr reference_wrapper( U&& x ) (1) (since C++20)
   noexcept(/*see below*/) ;
   reference_wrapper( const reference_wrapper& (until C++20)
   other ) noexcept; (2)
   constexpr reference_wrapper( const (since C++20)
   reference_wrapper& other ) noexcept;
   Constructs a new reference wrapper.
   1) Converts x to T& as if by T& t = std::forward<U>(x);, then stores a reference to
   t. This overload participates in overload resolution only if typename
   std::decay<U>::type is not the same type as reference_wrapper and the expression
   FUN(std::declval<U>()) is well-formed, where FUN names the set of imaginary
   functions
 void FUN(T&) noexcept;
 void FUN(T&&) = delete;
   2) Copy constructor. Stores a reference to other.get().

Parameters
   x - an object to wrap
   other - another reference wrapper

Exceptions
   1)
   noexcept specification:
   noexcept(noexcept(FUN(std::declval<U>())))
   where FUN is the set of imaginary functions described in the description above.

Example
    This section is incomplete
    Reason: no example
  Defect reports
   The following behavior-changing defect reports were applied retroactively to
   previously published C++ standards.
      DR Applied to Behavior as published Correct behavior
                       deleted reference_wrapper(T&&) constructor replaced with a
   LWG 2993 C++11 interferes constructor template
                       with overload resolution in some cases