table of contents
std::reference_wrapper::reference_wrapper(3) | C++ Standard Libary | std::reference_wrapper::reference_wrapper(3) |
NAME¶
std::reference_wrapper::reference_wrapper - std::reference_wrapper::reference_wrapper
Synopsis¶
template< class U > (1) (since C++11)
reference_wrapper( U&& x ) noexcept(/*see below*/) ; (constexpr since
C++20)
reference_wrapper( const reference_wrapper& other ) (2) (since
C++11)
noexcept; (constexpr since C++20)
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
Categories:¶
* conditionally noexcept
* Todo no example
2024.06.10 | http://cppreference.com |