Namespaces
Variants

std::reference_wrapper<T>:: reference_wrapper

From cppreference.net
Utilities library
Function objects
Function invocation
(C++17) (C++23)
Identity function object
(C++20)
Old binders and adaptors
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
( until C++17* ) ( until C++17* )
( until C++17* ) ( until C++17* )

( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
template < class U >
reference_wrapper ( U && x ) noexcept ( /*siehe unten*/ ) ;
(1) (seit C++11)
(constexpr seit C++20)
reference_wrapper ( const reference_wrapper & other ) noexcept ;
(2) (seit C++11)
(constexpr seit C++20)

Konstruiert einen neuen Referenz-Wrapper.

1) Wandelt x in T& um, als ob durch T & t = std:: forward < U > ( x ) ; , dann speichert es eine Referenz auf t . Diese Überladung nimmt nur dann an der Überladungsauflösung teil, wenn typename std:: decay < U > :: type nicht der gleiche Typ wie reference_wrapper ist und der Ausdruck FUN ( std:: declval < U > ( ) ) wohlgeformt ist, wobei FUN die Menge der imaginären Funktionen bezeichnet
void FUN(T&) noexcept;
void FUN(T&&) = delete;
2) Kopierkonstruktor. Speichert eine Referenz auf other. get ( ) .

Inhaltsverzeichnis

Parameter

x - ein zu umschließendes Objekt
other - ein weiterer Referenz-Wrapper

Ausnahmen

1)
noexcept Spezifikation:
noexcept ( noexcept ( FUN ( std:: declval < U > ( ) ) ) )
wobei FUN die Menge der imaginären Funktionen aus der obigen Beschreibung ist.

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