reference_wrapper Sınıfı
Başvuru sarmalar.
Sözdizimi
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)...));
};
Açıklamalar
, reference_wrapper<Ty>
bir nesneye veya türünde Ty
bir işleve yapılan başvurunun çevresinde kopya oluşturulabilir ve kopya atanabilir sarmalayıcıdır ve bu tür bir nesneyi işaret eden bir işaretçi tutar. , reference_wrapper
başvuruları standart kapsayıcılarda depolamak ve başvuruya göre nesneleri geçirmek için std::bind
kullanılabilir.
Türün Ty
bir nesne türü veya işlev türü olması gerekir ya da statik onay derleme zamanında başarısız olur.
Nesneleri oluşturmak reference_wrapper
için std::ref ve std::cref yardımcı işlevleri kullanılabilir.
Üyeler
Oluşturucular
Adı | Açıklama |
---|---|
reference_wrapper | bir reference_wrapper oluşturur. |
Tür tanımları
Adı | Açıklama |
---|---|
result_type | Sarmalanan başvurunun zayıf sonuç türü. |
type | Sarmalanan başvurunun türü. |
İşlevler
Adı | Açıklama |
---|---|
get | Sarmalanmış başvuruyu alır. |
İşleçler
Adı | Açıklama |
---|---|
operator Ty& |
Sarmalanan başvurunun işaretçisini alır. |
operator() | Sarmalanmış başvuruyu çağırır. |
get
Sarmalanmış başvuruyu alır.
Ty& get() const noexcept;
Açıklamalar
Üye işlevi sarmalanmış başvuruyu döndürür.
Örnek
// 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
işleç Ty
Sarmalanmış başvuruyu alır.
operator Ty&() const noexcept;
Açıklamalar
Üye işleci döndürür *ptr
.
Örnek
// 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()
Sarmalanmış başvuruyu çağırır.
template <class... Types>
auto operator()(Types&&... args);
Parametreler
Türler
Bağımsız değişken listesi türleri.
Args
Bağımsız değişken listesi.
Açıklamalar
Şablon üyesi operator()
döndürür std::invoke(get(), std::forward<Types>(args)...)
.
Örnek
// 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
bir reference_wrapper
oluşturur.
reference_wrapper(Ty& val) noexcept;
Parametreler
Ty
Kaydıracak tür.
Val
Kaydıracak değer.
Açıklamalar
Oluşturucu, depolanan değeri ptr
olarak &val
ayarlar.
Örnek
// 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
Sarmalanan başvurunun zayıf sonuç türü.
typedef R result_type;
Açıklamalar
result_type
typedef, sarmalanan bir işlevin zayıf sonuç türü için eş anlamlıdır. Bu tür tanımı yalnızca işlev türleri için anlamlıdır.
Örnek
// 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
Sarmalanan başvurunun türü.
typedef Ty type;
Açıklamalar
typedef, şablon bağımsız değişkeninin Ty
eş anlamlısıdır.
Örnek
// 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
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin