reference_wrapper, classe
Encapsule une référence.
Syntaxe
template <class Ty>
class reference_wrapper
{
typedef Ty type;
reference_wrapper(Ty&) noexcept;
operator Ty&() const noexcept;
Ty& get() const noexcept;
template <class... Types>
auto operator()(Types&&... args) const ->
decltype(std::invoke(get(), std::forward<Types>(args)...));
};
Notes
Un reference_wrapper<Ty>
est un wrapper constructible par copie et assignable par copie autour d’une référence à un objet ou une fonction de type Ty
. Il contient un pointeur vers un objet de ce type. Un reference_wrapper
peut être utilisé pour stocker des références dans des conteneurs standard et passer des objets par référence à std::bind
.
Le type Ty
doit être un type d’objet ou un type de fonction. Sinon, une assertion statique échoue au moment de la compilation.
Les fonctions d’assistance std::ref et std::cref peuvent être utilisées pour créer des objets reference_wrapper
.
Membres
Constructeurs
Nom | Description |
---|---|
reference_wrapper | Construit un objet reference_wrapper . |
Typedefs
Nom | Description |
---|---|
result_type | Type de résultat faible de la référence encapsulée. |
type | Type de la référence encapsulée. |
Functions
Nom | Description |
---|---|
get | Obtient la référence encapsulée. |
Opérateurs
Nom | Description |
---|---|
operator Ty& |
Obtient un pointeur vers la référence encapsulée. |
operator() | Appelle la référence encapsulée. |
get
Obtient la référence encapsulée.
Ty& get() const noexcept;
Notes
La fonction membre retourne la référence incluse dans un wrapper.
Exemple
// std__functional__reference_wrapper_get.cpp
// compile with: /EHsc
#include <functional>
#include <iostream>
int main() {
int i = 1;
std::reference_wrapper<int> rwi(i);
std::cout << "i = " << i << std::endl;
std::cout << "rwi = " << rwi << std::endl;
rwi.get() = -1;
std::cout << "i = " << i << std::endl;
return (0);
}
i = 1
rwi = 1
i = -1
opérateur Ty&
Obtient la référence incluse dans un wrapper.
operator Ty&() const noexcept;
Notes
L’opérateur membre retourne *ptr
.
Exemple
// std__functional__reference_wrapper_operator_cast.cpp
// compile with: /EHsc
#include <functional>
#include <iostream>
int main() {
int i = 1;
std::reference_wrapper<int> rwi(i);
std::cout << "i = " << i << std::endl;
std::cout << "(int)rwi = " << (int)rwi << std::endl;
return (0);
}
i = 1
(int)rwi = 1
operator()
Appelle la référence encapsulée.
template <class... Types>
auto operator()(Types&&... args);
Paramètres
Types
Types de la liste d’arguments.
args
Liste d’arguments.
Notes
Le membre de modèle operator()
retourne std::invoke(get(), std::forward<Types>(args)...)
.
Exemple
// std__functional__reference_wrapper_operator_call.cpp
// compile with: /EHsc
#include <functional>
#include <iostream>
int neg(int val) {
return (-val);
}
int main() {
std::reference_wrapper<int (int)> rwi(neg);
std::cout << "rwi(3) = " << rwi(3) << std::endl;
return (0);
}
rwi(3) = -3
reference_wrapper
Construit un objet reference_wrapper
.
reference_wrapper(Ty& val) noexcept;
Paramètres
Ty
Type à inclure dans un wrapper.
val
Valeur à inclure dans un wrapper.
Notes
Le constructeur définit la valeur stockée ptr
à &val
.
Exemple
// std__functional__reference_wrapper_reference_wrapper.cpp
// compile with: /EHsc
#include <functional>
#include <iostream>
int neg(int val) {
return (-val);
}
int main() {
int i = 1;
std::reference_wrapper<int> rwi(i);
std::cout << "i = " << i << std::endl;
std::cout << "rwi = " << rwi << std::endl;
rwi.get() = -1;
std::cout << "i = " << i << std::endl;
return (0);
}
i = 1
rwi = 1
i = -1
result_type
Type de résultat faible de la référence encapsulée.
typedef R result_type;
Notes
Le typedef result_type
est un synonyme pour le type de résultat faible d’une fonction incluse dans un wrapper. Ce typedef est significatif uniquement pour les types de fonction.
Exemple
// std__functional__reference_wrapper_result_type.cpp
// compile with: /EHsc
#include <functional>
#include <iostream>
int neg(int val) {
return (-val);
}
int main() {
typedef std::reference_wrapper<int (int)> Mywrapper;
Mywrapper rwi(neg);
Mywrapper::result_type val = rwi(3);
std::cout << "val = " << val << std::endl;
return (0);
}
val = -3
type
Type de la référence encapsulée.
typedef Ty type;
Notes
Le typedef est un synonyme de l'argument de modèle Ty
.
Exemple
// std__functional__reference_wrapper_type.cpp
// compile with: /EHsc
#include <functional>
#include <iostream>
int neg(int val) {
return (-val);
}
int main() {
int i = 1;
typedef std::reference_wrapper<int> Mywrapper;
Mywrapper rwi(i);
Mywrapper::type val = rwi.get();
std::cout << "i = " << i << std::endl;
std::cout << "rwi = " << val << std::endl;
return (0);
}
i = 1
rwi = 1
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour