Articles of semântica de movimento

Qual é a vantagem de usar referências universais em loops baseados em intervalo?

const auto& seria suficiente se eu quiser realizar operações somente leitura. No entanto, eu esbarrei for (auto&& e : v) // v is non-const algumas vezes recentemente. Isso me faz pensar: É possível que, em alguns casos obscuros, haja algum benefício de desempenho ao usar referências universais, em comparação com auto& ou const auto& ? […]

Por que não há designação de movimento / construtor de movimento padrão?

Eu sou um programador simples. As variables ​​de meus alunos, na maioria das vezes, consistem em tipos de POD e contêineres de STL. Por causa disso, raramente tenho que escrever operadores de atribuição ou construtores de cópia, pois eles são implementados por padrão. Adicione a isso, se eu usar std::move em objects não móveis, ele […]

Quando deve std :: move ser usado em um valor de retorno de function?

Nesse caso struct Foo {}; Foo meh() { return std::move(Foo()); } Tenho certeza que o movimento é desnecessário, porque o Foo recém-criado será um xvalue. Mas o que em casos como esses? struct Foo {}; Foo meh() { Foo foo; //do something, but knowing that foo can safely be disposed of //but does the compiler […]

O que é std :: move () e quando deve ser usado?

O que é isso? O que isso faz? Quando deve ser usado? Bons links são apreciados.

Posso listar-inicializar um vetor do tipo somente movimento?

Se eu passar o seguinte código através do meu snapshot do GCC 4.7, ele tentará copiar o unique_ptr s para o vetor. #include #include int main() { using move_only = std::unique_ptr; std::vector v { move_only(), move_only(), move_only() }; } Obviamente, isso não funciona porque o std::unique_ptr não é copiável: erro: uso da function excluída ‘std […]

O que posso fazer com um object movido de?

O padrão define precisamente o que eu posso fazer com um object depois de ter sido movido? Eu costumava pensar que tudo que você pode fazer com um object movido a partir dele é destruí-lo, mas isso não seria suficiente. Por exemplo, execute a swap modelo de function conforme definido na biblioteca padrão: template void […]

push_back vs emplace_back

Estou um pouco confuso em relação à diferença entre push_back e emplace_back . void emplace_back(Type&& _Val); void push_back(const Type& _Val); void push_back(Type&& _Val); Como há uma sobrecarga push_back tomando uma referência de valor eu não vejo exatamente qual é o propósito do emplace_back ?

O que são as semânticas de movimento?

Acabei de ouvir a entrevista do podcast de rádio de engenharia de software com Scott Meyers sobre C ++ 0x . A maioria dos novos resources fez sentido para mim e estou realmente animado com C ++ 0x agora, com exceção de um. Eu ainda não consigo mover a semântica … O que eles são […]