Resultados da pesquisa a pedido "move-semantics"

3 a resposta

Returning an argument passed by rvalue reference

Se eu tiver aulaA e funções A f(A &&a) { doSomething(a); return a; } A g(A a) { doSomething(a); return a; }o construtor de cópia é chamado ao retornara def, mas o construtor de movimentação é usado ao retornar deg. No entanto, pelo que entendi,f ...

1 a resposta

Mover construtor para classe derivada

Eu tenho 2 aulas: template<typename T> class base{ T t; public: base(base &&b): t(std::move(b.t)){} }; template<typename T, typename T2> class derived : protected base<T>{ T2 t2; public: derived(derived &&d): ...

3 a resposta

Construtor / atribuição de movimentação padrão e construtor / atribuição de cópia excluída

De acordo com o padrão, Se a definição de uma classe X não declarar explicitamente um construtor de movimentação, uma será implicitamente declarada como padrão se e somente se - X não possui um construtor de cópias declarado pelo usuário, - X ...

2 a resposta

Função membro .begin () e std :: begin ()

Chamando a função de membro.begin() dostd::vector estd::begin() em rvalues resulta em saídas diferentes, como mostra o seguinte teste: vector<int> a{ 1, 2, 3 }; vector<int>::iterator it1 = move(a).begin(); // OK vector<int>::const_iterator it2 = ...

3 a resposta

Por que copiar o construtor é chamado na lista de inicializadores do std :: vector?

Eu tenho a seguinte classe muito simples: class Foo { public: Foo() {} Foo(const Foo&) = delete; Foo(Foo&&) {} void operator=(const Foo&) = delete; void operator=(Foo&&) {} void dump() const {} }; A classe é movível construtível e atribuível, ...

2 a resposta

Mover Construtor vs Copiar Elision. Qual deles é chamado?

Eu tenho dois pedaços de código aqui para mostrar a você. São duas classes e cada uma fornece um Move Constructor e uma função que retorna temporariamente. No primeiro caso, a função que retorna uma chamada temporária deMover Construtor No ...

4 a resposta

std :: vector :: emplace_back e std :: move

Existe alguma vantagem em usarstd::vector::emplace_back estd::move juntos? ou é apenas redundante desdestd::vector::emplace_back fará uma construção no local? Casos de esclarecimento: std::vector<std::string> ...

2 a resposta

Quais tipos de std são garantidos como vazios / nulos após serem usados como arg no construtor de movimentação

eu seishared_ptr, unique_ptr, weak_ptr é garantido que ele esteja vazio depois de usado como argumento RVR no construtor do mesmo tipo, mas será que o padrão especifica isso para algum outrostd:: tipos ao lado dos que eu mencionei. Observe que ...

1 a resposta

Por que os construtores de movimentação excluídos implícita e explicitamente são tratados de maneira diferente?

O que éjustificativapor trás do tratamento diferente de construtores de movimentação excluídos implícita e explicitamente no padrão C ++ 11, com relação à geração implícita de construtores de movimentação de classes que contêm / herdam? C ++ 14 ...

1 a resposta

Um destruidor virtual padrão impede operações de movimentação geradas pelo compilador?

Inspirado no postPor que o destruidor desativa a geração de métodos de movimentação implícitos? [https://stackoverflow.com/questions/33932824/why-destructor-disabling-the-generation-of-implicit-move-functions] , Fiquei pensando se o mesmo se ...