Resultados da pesquisa a pedido "move-semantics"

3 a resposta

C ++ Move semântica e exceções

No próximo padrão C ++ 0x, o que acontece quando uma exceção é lançada dentro / durante o construtor de movimentação? O objeto original permanecerá? ou o objeto original e o objeto de mudança estão em um estado indefinido? quais são as garantias ...

3 a resposta

Como retornar um fstream (C ++ 0x)

Acho que vou entrar nisso e começar com o código: #include <iostream> #include <fstream> #include <string> class test : public std::ofstream { public: test(const std::string& filename) { this->open(gen_filename(filename)); }; test(const test&) = ...

5 a resposta

Tornando a troca mais rápida, fácil de usar e protegida contra exceções

Eu não consegui dormir na noite passada e comecei a pensar emstd::swap. Aqui está a versão familiar do C ++ 98: template <typename T> void swap(T& a, T& b) { T c(a); a = b; b = c; }Se uma classe definida pelo usuárioFoo usa recursos externos, ...

2 a resposta

Mover elemento da matriz boost_ multi-index

Digamos que eu tenha um objeto móvel e não copiável e que tenha um array multi-index com o índice random_access. Preciso mover meu objeto para fora da frente da matriz, mas não consigo encontrar nenhum método que me daria referência rvalue / ...

1 a resposta

Por que o compilador não reclama que um iterador movido para um loop for é imutável?

Estou lendo a segunda edição do Rust Book e encontrei o seguinte exemplo na seção de iteradores: let v1 = vec![1, 2, 3]; let v1_iter = v1.iter(); for val in v1_iter { println!("Got: {}", val); }Por que o compilador não reclama quev1_iter ...

6 a resposta

Como uso um deleter personalizado com um membro std :: unique_ptr?

Eu tenho uma classe com um membro unique_ptr. class Foo { private: std::unique_ptr<Bar> bar; ... };A barra é uma classe de terceiros que possui uma função create () e uma função destroy (). Se eu quisesse usar umstd::unique_ptr com ele em uma ...

7 a resposta

A construção de passagem por valor e movimentação é um idioma ruim?

Como movemos a semântica em C ++, hoje em dia é comum fazer void set_a(A a) { _a = std::move(a); }O raciocínio é que sea é um rvalue, a cópia será elidida e haverá apenas um movimento. Mas o que acontece sea é um valor l? Parece que haverá uma ...

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

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

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