Resultados da pesquisa a pedido "move-semantics"
Por que precisamos definir a referência rvalue como null no construtor move?
//code from https://skillsmatter.com/skillscasts/2188-move-semanticsperfect-forwarding-and-rvalue-references class Widget { public: Widget(Widget&& rhs) : pds(rhs.pds) // take source’s value { rhs.pds = nullptr; // why?? } private: struct ...
Argumento do construtor C ++ 11: std :: move e value ou std :: forward e rvalue reference
Qual dos dois abaixo deve ser o preferido e por quê? struct X { Y data_; explicit X(Y&& data): data_(std::forward<Y>(data)) {} };vs struct X { Y data_; explicit X(Y data): data_(std::move(data)) {} };
Modelos genéricos de operadores de conversão e semântica de movimentos: alguma solução universal?
Este é um acompanhamento deModelos explícitos de operadores de conversão qualificados para ref em ação [https://stackoverflow.com/q/23377647/2644390]. Eu experimentei muitas opções diferentes e estou apresentando alguns resultados aqui, na ...
Que otimização a semântica de movimento fornece se já temos o RVO?
Pelo que entendi, um dos propósitos de adicionar semântica de movimentação é otimizar o código chamando o construtor especial para copiar objetos "temporários". Por exemplo, ...
O std :: move é realmente necessário na lista de inicialização do construtor para membros pesados transmitidos por valor?
Recentemente, li um exemplo decppreference ... / vector / emplace_back [http://en.cppreference.com/w/cpp/container/vector/emplace_back]: struct President { std::string name; std::string country; int year; President(std::string p_name, ...
Unique_ptr tem garantia de armazenar nullptr após a movimentação?
Éunique_ptr garantido para armazenarnullptr depois da mudança? std::unique_ptr<int> p1{new int{23}}; std::unique_ptr<int> p2{std::move(p1)}; assert(!p1); // is this always true?
Quais são as regras para geração automática de operações de movimentação?
No C ++ 98, o compilador C ++ poderiaautomaticamente gerar construtor de cópias e operador de atribuição de cópias por meio de cópia por membro, por exemplo struct X { std::string s; std::vector<int> v; int n; };O compiladorautomaticamente gera ...
Mover semântica e avaliação da ordem das funções
Suponha que eu tenha o seguinte: #include <memory> struct A { int x; }; class B { B(int x, std::unique_ptr<A> a); }; class C : public B { C(std::unique_ptr<A> a) : B(a->x, std::move(a)) {} };Se eu entender as regras do C ++ sobre "ordem não ...
Atribuição de movimento mais lenta que atribuição de cópia - bug, recurso ou não especificado?
Recentemente, percebi que a adição de semântica de movimentação no C ++ 11 (ou pelo menos minha implementação, o Visual C ++) tem ativamente (e de maneira bastante dramática)quebrado uma das minhas otimizações. Considere o seguinte ...
push_back () e emplace_back () nos bastidores
Atualmente, estou aprendendo C ++ por conta própria e estou curioso sobre comopush_back() eemplace_back() trabalhar sob o capô. Eu sempre assumi queemplace_back() é mais rápido quando você está tentando construir e empurrar um objeto grande para ...