Resultados de la búsqueda a petición "rvalue"
prolongando la vida de los temporales
¿Cuál es la razón de diseño detrás de permitir esto const Foo& a = function_returning_Foo_by_value();pero no esto Foo& a = function_returning_Foo_by_value();? ¿Qué podría salir mal en la segunda línea (que ya no saldría mal en la primera línea)?
¿La mejor forma para constructores? Pasar por valor o referencia?
Me pregunto la mejor forma para mis constructores. Aquí hay un código de muestra: class Y { ... } class X { public: X(const Y& y) : m_y(y) {} // (a) X(Y y) : m_y(y) {} // (b) X(Y&& y) : m_y(std::forward<Y>(y)) {} // (c) Y m_y; } Y f() { return ...
¿Por qué es ilegal tomar la dirección de un temporal?
Sé que el código escrito a continuación es ilegal. void doSomething(std::string *s){} int main() { doSomething(&std::string("Hello World")); return 0; }La razón es que no se nos permite tomar la dirección de un objeto temporal. Pero mi pregunta ...
Si una función devuelve un int, ¿se le puede asignar un int?
Si una función devuelve un int, ¿se le puede asignar un valor int? No veo que tenga mucho sentido asignar un valor a una función. int f() {} f() = 1;Noté que, si la función devuelve una referencia a un int, está bien. ¿Está restringido solo a ...
¿Por qué el operador de incremento previo da rvalue en C?
En C ++, el operador previo al incremento proporciona lvalue porque el objeto incrementado en sí mismo se devuelve, no una copia. Pero en C, da un valor. ¿Por qué?
¿`Const &&` se une a todos los valores (y valores x)?
El estándar C ++ define las siguientes funciones eliminadas; template <class T> void ref(const T&&) = delete; template <class T> void cref(const T&&) = delete;Esto es para ayudar a garantizar que las funciones no se usen incorrectamente al ...
Sobre cómo reconocer la referencia de Rvalue o Lvalue y la regla if-it-has-a-name
Estaba leyendo el libro de Thomas Beckerartículo [http://thbecker.net/articles/rvalue_references/section_05.html]en referencia de valor y su uso. Allí define lo que llamasi-tiene-un-nombre regla: Las cosas que se declaran como referencia de ...
Rvalue Reference se trata como un Lvalue?
Publiqué esta respuesta:https://stackoverflow.com/a/28459180/2642059 [https://stackoverflow.com/a/28459180/2642059]Que contiene el siguiente código: void foo(string&& bar){ string* temp = &bar; cout << *temp << " @:" << temp << endl; }Esbar ¿Un ...
Paso de valores a través de std :: bind
Quiero pasar un valor a través destd::bind a una función que toma una referencia rvalue en C ++ 0x. No puedo entender cómo hacerlo. Por ejemplo: #include <utility> #include <functional> template<class Type> void foo(Type &&value) { Type ...
¿Por qué std :: move toma una referencia hacia adelante?
La implementación destd::move básicamente se ve así: template<typename T> typename std::remove_reference<T>::type&& move(T&& t) { return static_cast<typename std::remove_reference<T>::type&&>(t); }Tenga en cuenta que el parámetro destd::move es ...