◐ Shell
clean mode source ↗

std::ref, std::cref - cppreference.com

De cppreference.com

Esta página se ha traducido por ordenador/computador/computadora de la versión en inglés de la Wiki usando Google Translate.

La traducción puede contener errores y palabras aparatosas/incorrectas. Planea sobre el texto para ver la versión original. Puedes ayudar a corregir los errores y mejorar la traducción. Para instrucciones haz clic aquí.

Definido en el archivo de encabezado <functional>

template< class T > std::reference_wrapper<T> ref(T& t);

(1) (desde C++11)

template< class T > std::reference_wrapper<T> ref( std::reference_wrapper<T> t );

(2) (desde C++11)

template< class T > std::reference_wrapper<const T> cref( const T& t );

(3) (desde C++11)

template< class T > std::reference_wrapper<const T> cref( std::reference_wrapper<T> t )

(4) (desde C++11)

Plantillas de función y ref cref son funciones auxiliares que generan un objeto de tipo std::reference_wrapper, con deducción argumento de plantilla para determinar el argumento de plantilla del resultado .

Original:

Function templates ref and cref are helper functions that generate an object of type std::reference_wrapper, using template argument deduction to determine the template argument of the result.

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Parámetros

t -

lvalue referencia al objeto que debe ser envuelto o una instancia de std::reference_wrapper

Original:

lvalue reference to object that needs to be wrapped or an instance of std::reference_wrapper

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Valor de retorno

1) std::reference_wrapper<T>(t)

2) ref(t.get())

3) std::reference_wrapper<const T>(t)

4) cref(t.get())

Excepciones

Ejemplo

#include <functional>
#include <iostream>

void f(int& n1, int& n2, const int& n3)
{
    std::cout << "In function: " << n1 << ' ' << n2 << ' ' << n3 << '\n';
    ++n1; // increments the copy of n1 stored in the function object
    ++n2; // increments the main()'s n2
    // ++n3; // compile error
}

int main()
{
    int n1 = 1, n2 = 2, n3 = 3;
    std::function<void()> bound_f = std::bind(f, n1, std::ref(n2), std::cref(n3));
    n1 = 10;
    n2 = 11;
    n3 = 12;
    std::cout << "Before function: " << n1 << ' ' << n2 << ' ' << n3 << '\n';
    bound_f();
    std::cout << "After function: " << n1 << ' ' << n2 << ' ' << n3 << '\n';
}

Salida:

Before function: 10 11 12
In function: 1 11 12
After function: 10 12 12

Ver también