Aracılığıyla paylaş


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 Tybir 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::bindkullanı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_wrapperoluş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_wrapperoluş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 &valayarlar.

Ö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 Tyeş 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