std::reference_wrapper<T>::reference_wrapper
Von de.cppreference.net
template< class U >
reference_wrapper( U&& x ) noexcept(/*see below*/) ;
|
(1) | (seit C++11) (constexpr seit C++20) |
reference_wrapper( const reference_wrapper& other ) noexcept;
|
(2) | (seit C++11) (constexpr seit C++20) |
Erzeugt einen neuen Referenz-Wrapper.
1) Konvertiert
x nach T& wie durch T& t = std::forward<U>(x); und speichert dann eine Referenz auf t. Diese Überladung nimmt nur an der Überladungsauflösung teil, wenn typename std::decay<U>::type nicht derselbe Typ wie reference_wrapper ist und der Ausdruck FUN(std::declval<U>()) wohlgeformt ist, wobei FUN die Menge der imaginären Funktionen benennt
void FUN(T&) noexcept;
void FUN(T&&) = delete;
2) Kopierkonstruktor. Speichert eine Referenz auf
other.get().Parameter
| x | - | ein zu umschließendes Objekt |
| other | - | ein weiterer Referenz-Wrapper |
Ausnahmen
1)
noexcept
Spezifikation:
wobei
noexcept
(
noexcept
(
FUN
(
std::
declval
<
U
>
(
)
)
)
)
FUN
die Menge der imaginären Funktionen aus der obigen Beschreibung ist.
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: Kein Beispiel |
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| LWG 2993 | C++11 |
gelöschter
reference_wrapper(T&&)
Konstruktor beeinträchtigt
die Überladungsauflösung in einigen Fällen |
ersetzt durch einen Konstruktor-Template |