move-semantics

Я где-то видел код, в котором кто-то решил скопировать объект, а затем переместите его на член данных класса. Это оставило меня в замешательстве, поскольку я думал, что весь смысл перемещения состоял в том, чтобы избежать копирования. Вот пример: struct S { S(std::string str) : data(std::move(str)) {...

у меня есть класс с членом unique_ptr не. class Foo { private: std::unique_ptr<Bar> bar; ... }; бар является сторонним классом, который имеет функцию create() и функцию destroy (). если бы я хотел использовать std::unique_ptr С ним в Автономной функции я мог бы сделать: void foo() { std...

const auto& было бы достаточно, если я хочу выполнять операции только для чтения. Однако я наткнулся на for (auto&& e : v) // v is non-const в последнее время пару раз. Это заставляет меня задуматься: возможно ли, что в некоторых неясных угловых случаях есть некоторое преимущество в производи...

Если я передаю следующий код через мой снимок GCC 4.7, он пытается скопировать unique_ptrs на вектор. #include <vector> #include <memory> int main() { using move_only = std::unique_ptr<int>; std::vector<move_only> v { move_only(), move_only(), move_only() }; } очевидно, что...

есть ли причина, когда функция должен вернуть ссылку RValue? Техника, трюк, идиома или паттерн? MyClass&& func( ... ); Я знаю об опасности возвращения ссылок в целом, но иногда мы делаем это в любом случае, не так ли (T& T::operator=(T) это всего лишь один идиоматических примеру). Но как насчет...

У меня есть класс контейнера прокси вокруг подвижного объекта и я хочу, чтобы прокси мог неявно давать ссылку rvalue на базовый объект, но только когда сам прокси перемещается. Я считаю, что я смогу реализовать это поведение в соответствии с предложением n2439 "расширение семантики перемещения до *this", н...

это struct Example { int a, b; Example(int mA, int mB) : a{mA}, b{mB} { } Example(const Example& mE) : a{mE.a}, b{mE.b} { } Example(Example&& mE) : a{move(mE.a)}, b{move(mE.b)} { } Example& operator=(const Example& mE) { a = mE.a; b = mE.b; retur...

В C++11 emplace_back() обычно предпочтительнее (с точки зрения эффективности)push_back() как это позволяет на месте строительства, но это все еще имеет место при использовании push_back(std::move()) С уже построенным объектом? например,emplace_back() все-таки предпочитал в таких случаях, как следующие? st...

Я наблюдал за Скоттом Мейерсом говорить на универсальные ссылки С конференции C++ и за ее пределами 2012 года, и все имеет смысл до сих пор. Тем не менее, член аудитории задает вопрос примерно через 50 минут, о котором мне тоже было интересно. Мейерс говорит, что его не волнует ответ, потому что он неидиомати...

рассмотрим класс X С N переменные-члены, каждый из некоторых копировать и движимое тип, и N соответствующий сеттера. В C++98 определение X скорее всего, будет выглядеть примерно так: class X { public: void set_a(A const& a) { _a = a; } void set_b(B const& b) { _b = b; } ... private: ...