std::reference_wrapper::reference_wrapper
From cppreference.com
< cpp | utility | functional | reference wrapper
(1) | ||
reference_wrapper( T& x ) noexcept; reference_wrapper( T&& x ) = delete; |
(until C++20) | |
template< class U > reference_wrapper( U&& x ) noexcept(/*see below*/) ; |
(since C++20) | |
reference_wrapper( const reference_wrapper& other ) noexcept; |
(2) | |
Constructs a new reference wrapper.
1) Stores a reference to |
(until C++20) |
1) Converts void FUN(T&) noexcept; void FUN(T&&) = delete; |
(since C++20) |
2) Copy constructor. Stores a reference to other.get()
.
Parameters
x | - | an object to wrap |
other | - | another reference wrapper |
Exceptions
1) noexcept specification:
where noexcept(noexcept(FUN(std::declval<U>()))) FUN is the set of imaginary functions described in the description above.
|
(since C++20) |
Notes
The pre-C++20 deleted constructor from T&&
still participates in the formation of implicit conversion sequences, which can lead to unexpected results in overload resolution. The C++20 change (via LWG issue 2993) rectifies this problem.