es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tag: FORWARDING-REFERENCE

¿Debería utilizarse std::forward cuando la referencia de avance no se pasa a otra función pero se llama a una función miembro sobre ella?

Ejemplos de std::forward que he visto usarlo cuando se pasa el argumento a otra función, como este común desde cppreference: template<class t=””> void wrapper(T&& arg) { // arg siempre es una lvalue foo(std::forward<t>(arg)); // Forward como lvalue o como rvalue, dependiendo de T } También tiene un caso más complicado: . . . Read more

¿Deberías pasar un objeto invocable como argumento de destino mediante std::function o mediante una referencia universal?

Considere el siguiente código: #include <functional> #include <iostream> struct S1 { S1(const std::function<void()>& func) : func{func} {} std::function<void()> func; }; struct S2 { template<typename f=””> S2(F&& func) : func{std::forward<f>(func)} {} std::function<void()> func; }; int main() { S1 s1{[]{ std::cout << “Se llamó a la función S1\n”; }}; S2 s2{[]{ std::cout . . . Read more

¿Bajo qué condiciones std::forward y static_cast son equivalentes?

El enlace http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0644r1.html dice: Hay dos formas de reenviar una variable: se puede usar std::forward o se puede usar static_cast directamente (como lo hace el operador de reenvío de esta propuesta): template <class x,=”” class=”” y=””> decltype(auto) foo(X&& x, Y&& y) { return std::forward<x>(x)(std::forward<y>(y)); // con std::forward return static_cast<x&&>(x)(static_cast<y&&>(y)); // . . . Read more