std::reference_wrapper<T>:: reference_wrapper
From cppreference.net
<
cpp
|
utility
|
functional
|
reference wrapper
C++
Utilities library
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Function objects
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Old binders and adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
std::reference_wrapper
| Member functions | ||||
|
reference_wrapper::reference_wrapper
|
||||
| Non-member functions | ||||
|
(C++26)
(C++26)
|
||||
| Deduction guides (C++17) | ||||
| Helper classes | ||||
|
template
<
class
U
>
reference_wrapper ( U && x ) noexcept ( /*see below*/ ) ; |
(1) |
(начиная с C++11)
(constexpr начиная с C++20) |
|
reference_wrapper
(
const
reference_wrapper
&
other
)
noexcept
;
|
(2) |
(начиная с C++11)
(constexpr начиная с C++20) |
Создает новую обертку ссылки.
1)
Преобразует
x
в
T&
как если бы с помощью
T
&
t
=
std::
forward
<
U
>
(
x
)
;
, затем сохраняет ссылку на
t
. Эта перегрузка участвует в разрешении перегрузки только если
typename
std::
decay
<
U
>
::
type
не является тем же типом, что и
reference_wrapper
, и выражение
FUN
(
std::
declval
<
U
>
(
)
)
является корректным, где
FUN
обозначает набор воображаемых функций
void FUN(T&) noexcept; void FUN(T&&) = delete;
2)
Конструктор копирования. Сохраняет ссылку на
other.
get
(
)
.
Содержание |
Параметры
| x | - | объект для обёртки |
| other | - | другой ссылочный враппер |
Исключения
1)
noexcept
спецификация:
где
noexcept
(
noexcept
(
FUN
(
std::
declval
<
U
>
(
)
)
)
)
FUN
- это набор воображаемых функций, описанных в приведенном выше описании.
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Отчеты о дефектах
Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 2993 | C++11 |
удаленный конструктор
reference_wrapper(T&&)
мешает
разрешению перегрузки в некоторых случаях |
заменен на конструктор-шаблон |