Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Membungkus referensi.
Sintaks
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)...));
};
Keterangan
reference_wrapper<Ty> adalah pembungkus salinan yang dapat dibangun dan disalin yang dapat ditetapkan di sekitar referensi ke objek atau fungsi jenis Ty, dan menyimpan pointer yang menunjuk ke objek jenis tersebut. reference_wrapper dapat digunakan untuk menyimpan referensi dalam kontainer standar, dan untuk meneruskan objek berdasarkan referensi ke std::bind.
Jenis Ty harus berupa jenis objek atau jenis fungsi, atau pernyataan statis gagal pada waktu kompilasi.
Fungsi pembantu std::ref dan std::cref dapat digunakan untuk membuat reference_wrapper objek.
Anggota
Konstruktor
| Nama | Deskripsi |
|---|---|
| reference_wrapper | Membangun sebuah reference_wrapper. |
Typedefs
| Nama | Deskripsi |
|---|---|
| result_type | Jenis hasil lemah dari referensi yang dibungkus. |
| jenis | Jenis referensi yang dibungkus. |
Fungsi
| Nama | Deskripsi |
|---|---|
| get | Mendapatkan referensi yang dibungkus. |
Operator
| Nama | Deskripsi |
|---|---|
operator Ty& |
Mendapatkan penunjuk ke referensi yang dibungkus. |
| operator() | Memanggil referensi yang dibungkus. |
get
Mendapatkan referensi yang dibungkus.
Ty& get() const noexcept;
Keterangan
Fungsi anggota mengembalikan referensi yang dibungkus.
Contoh
// 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
operator Ty&
Mendapatkan referensi yang dibungkus.
operator Ty&() const noexcept;
Keterangan
Operator anggota mengembalikan *ptr.
Contoh
// 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()
Memanggil referensi yang dibungkus.
template <class... Types>
auto operator()(Types&&... args);
Parameter
Jenis
Jenis daftar argumen.
argumen
Daftar argumen.
Keterangan
Anggota operator() templat mengembalikan std::invoke(get(), std::forward<Types>(args)...).
Contoh
// 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
Membangun sebuah reference_wrapper.
reference_wrapper(Ty& val) noexcept;
Parameter
Ty
Jenis untuk dibungkus.
Val
Nilai yang akan dibungkus.
Keterangan
Konstruktor mengatur nilai ptr tersimpan ke &val.
Contoh
// 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
Jenis hasil lemah dari referensi yang dibungkus.
typedef R result_type;
Keterangan
Typedef result_type adalah sinonim untuk jenis hasil lemah dari fungsi yang dibungkus. Typedef ini hanya bermakna untuk jenis fungsi.
Contoh
// 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
jenis
Jenis referensi yang dibungkus.
typedef Ty type;
Keterangan
Typedef adalah sinonim untuk argumen Tytemplat .
Contoh
// 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