Resultados da pesquisa a pedido "move-semantics"

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

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

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?

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

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

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

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

3 a resposta

Mover semântica para tipos de POD-ish

Existe algum ponto em implementar um construtor de movimentação e um operador de atribuição de movimentação para uma estrutura ou classe que contenha apenas tipos primitivos? Por exemplo, struct Foo { float x; float y; float z; /// ... ctor, ...

2 a resposta

Como mover elementos da fila de prioridade STL

A fila de prioridade STL do C ++ possui um método pop vazio () e um método const ref top (). Portanto, se você quiser mover elementos para fora da fila, precisará fazer algo assim: T moved = std::move(const_cast<T&>(myQueue.top()))); ...

3 a resposta

Posso atribuir o conteúdo de um std :: map a outro std :: map?

É possível inserir o conteúdo de um std :: map temporáriotemp em outro std :: mapm usando a semântica de movimentação, para que os valores do temporário não sejam copiados e reutilizados? Digamos que alguém tenha: std::map<int, Data> temp; ...