Domande taggate «move-semantics»

12
Che cos'è la semantica di movimento?
Ho appena finito di ascoltare l' intervista al podcast della radio Software Engineering con Scott Meyers riguardo al C ++ 0x . La maggior parte delle nuove funzionalità ha avuto senso per me, e ora sono davvero entusiasta di C ++ 0x, con l'eccezione di una. Non riesco ancora a …

7
push_back vs emplace_back
Sono un po 'confuso riguardo alla differenza tra push_backe emplace_back. void emplace_back(Type&& _Val); void push_back(const Type& _Val); void push_back(Type&& _Val); Dato che c'è un push_backsovraccarico che prende un riferimento di valore, non vedo esattamente quale sia lo scopo di emplace_back?


6
Valori C ++ 11 e spostamento della confusione semantica (istruzione return)
Sto cercando di capire i riferimenti ai valori e spostare la semantica di C ++ 11. Qual è la differenza tra questi esempi e quale di essi non eseguirà alcuna copia vettoriale? Primo esempio std::vector<int> return_vector(void) { std::vector<int> tmp {1,2,3,4,5}; return tmp; } std::vector<int> &&rval_ref = return_vector(); Secondo esempio std::vector<int>&& …



6
Perché dovrei std :: move an std :: shared_ptr?
Ho cercato il codice sorgente di Clang e ho trovato questo frammento: void CompilerInstance::setInvocation( std::shared_ptr<CompilerInvocation> Value) { Invocation = std::move(Value); } Perché dovrei voler std::moveun std::shared_ptr? C'è qualche punto che trasferisce la proprietà su una risorsa condivisa? Perché non dovrei fare questo invece? void CompilerInstance::setInvocation( std::shared_ptr<CompilerInvocation> Value) { Invocation = …

2
Cosa posso fare con un oggetto spostato?
Lo standard definisce esattamente cosa posso fare con un oggetto dopo che è stato spostato? Pensavo che tutto ciò che puoi fare con un oggetto spostato è distruggerlo, ma ciò non sarebbe sufficiente. Ad esempio, prendi il modello di funzione swapcome definito nella libreria standard: template <typename T> void swap(T& …



4
Quando rendere un tipo non mobile in C ++ 11?
Sono rimasto sorpreso dal fatto che ciò non si sia verificato nei miei risultati di ricerca, ho pensato che qualcuno l'avrebbe mai chiesto prima, data l'utilità della semantica di spostamento in C ++ 11: Quando devo (o è una buona idea per me) rendere una classe non mobile in C …

1
Impossibile spostarsi dal contenuto preso in prestito / impossibile spostarsi da dietro un riferimento condiviso
Non capisco l'errore cannot move out of borrowed content. L'ho ricevuto molte volte e l'ho sempre risolto, ma non ho mai capito il perché. Per esempio: 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); } produce l'errore: error[E0507]: cannot move out …



2
In che modo std :: move () trasferisce i valori in RValues?
Mi sono appena ritrovato a non comprendere appieno la logica di std::move(). All'inizio l'ho cercato su Google ma sembra che ci siano solo documenti su come usarlo std::move(), non su come funziona la sua struttura. Voglio dire, so qual è la funzione del membro del modello, ma quando std::move()esamino la …

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.