Perguntas com a marcação «move-semantics»

12
O que é semântica de movimento?
Acabei de ouvir a entrevista de podcast de rádio da Engenharia de Software com Scott Meyers sobre C ++ 0x . A maioria dos novos recursos fazia sentido para mim, e estou realmente empolgado com o C ++ 0x agora, com exceção de um. Ainda não entendo a semântica de …

7
push_back vs emplace_back
Estou um pouco confuso sobre a diferença entre push_backe emplace_back. void emplace_back(Type&& _Val); void push_back(const Type& _Val); void push_back(Type&& _Val); Como há uma push_backsobrecarga tomando uma referência rvalue, não vejo bem qual é o objetivo de emplace_backse tornar?


6
C ++ 11 rvalues ​​e mover semântica confusão (declaração de retorno)
Estou tentando entender as referências rvalue e mover a semântica do C ++ 11. Qual é a diferença entre esses exemplos e qual deles não fará cópia vetorial? Primeiro exemplo std::vector<int> return_vector(void) { std::vector<int> tmp {1,2,3,4,5}; return tmp; } std::vector<int> &&rval_ref = return_vector(); Segundo exemplo std::vector<int>&& return_vector(void) { std::vector<int> tmp …



6
Por que eu std :: move um std :: shared_ptr?
Estive pesquisando o código-fonte do Clang e encontrei este trecho: void CompilerInstance::setInvocation( std::shared_ptr<CompilerInvocation> Value) { Invocation = std::move(Value); } Por que eu iria querer std::moveum std::shared_ptr? Existe algum ponto em transferir a propriedade de um recurso compartilhado? Por que eu não faria isso? void CompilerInstance::setInvocation( std::shared_ptr<CompilerInvocation> Value) { Invocation = …




4
Quando tornar um tipo não móvel no C ++ 11?
Fiquei surpreso que isso não tenha aparecido nos meus resultados de pesquisa, pensei que alguém teria perguntado isso antes, dada a utilidade da semântica de movimento no C ++ 11: Quando tenho que (ou é uma boa idéia para mim) tornar uma classe não móvel no C ++ 11? ( …

1
Não é possível sair do conteúdo emprestado / não é possível deixar para trás uma referência compartilhada
Eu não entendo o erro cannot move out of borrowed content. Eu o recebi muitas vezes e sempre o resolvi, mas nunca entendi o porquê. Por exemplo: for line in self.xslg_file.iter() { self.buffer.clear(); for current_char in line.into_bytes().iter() { self.buffer.push(*current_char as char); } println!("{}", line); } produz o erro: error[E0507]: cannot …



2
Como std :: move () transfere valores para RValues?
Eu simplesmente não entendi totalmente a lógica de std::move(). A princípio, pesquisei no Google, mas parece que só existem documentos sobre como usar std::move(), não como funciona sua estrutura. Quer dizer, eu sei o que a função de membro do modelo é, mas quando eu olho para a std::move()definição no …

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.