Resultados da pesquisa a pedido "move-semantics"
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 ...
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&) = ...
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, ...
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 / ...
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 ...
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 ...
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 ...
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; ...
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()))); ...
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, ...