Resultados da pesquisa a pedido "move-semantics"

3 a resposta

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 ...

1 a resposta

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)) {} };

0 a resposta

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 ...

8 a resposta

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, ...

4 a resposta

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, ...

2 a resposta

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?

2 a resposta

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 ...

3 a resposta

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 ...

2 a resposta

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 ...

1 a resposta

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 ...