Tag: PASS-BY-RVALUE-REFERENCE
Creo recordar que alguien me dijo que estos dos métodos foo(std::vector<int>&& v) { member = std::move(v); } bar(std::vector<int> v) { member = std::move(v); } no invocarán una copia si hay un movimiento en el lugar de llamada. foo(std::move(v1)); bar(std::move(v2)); ya que el compilador optimizará la llamada y tratará el caso . . . Read more
He leído sobre el reenvío perfecto, pero aún tengo preguntas. Considera este código: template <typename input,=”” typename=”” output=””> struct Processor { Output process(Input&& input) { startTimer(); // Iniciando temporizador auto data = onProcess(std::forward<input>(input)); // Aquí se realiza un trabajo pesado stopTimer(); // Deteniendo temporizador logTimer(); // Registrando cuántos ms han . . . Read more
Tengo el siguiente fragmento de código: “`c++ #include <iostream> struct T { int a; <pre><code>T() = default; T(T& other) { std::cout << "copy &\n"; } T(T&& other) { std::cout << "move &&\n"; } </code></pre> }; void foo(T&& x) { T y(x); // ¿Por qué se llama al constructor de copia? . . . Read more
Tengo el siguiente código, que aparentemente compila en MSVC y GCC: #include <iostream> class Test { public: Test() = default; Test(Test const& other) = delete; Test(Test&& other) noexcept = delete; Test& operator=(Test const& other) = delete; Test& operator=(Test&& other) = delete; auto getX() -> int { return x; }; auto . . . Read more
Al tener este código: #include <iostream> class Base { public: Base() = default; explicit Base(int val) : _var(val) {} Base operator=(const Base &rhs) { _var = rhs._var; return *this; } void print() const { std::cout << _var << std::endl; } private: int _var; }; int main() { Base b[] = . . . Read more