Suchergebnisse für Anfrage "move-semantics"

4 die antwort

Move Constructor vs Copy Elision. Welches wird angerufen?

Ich habe hier zwei Code-Teile, die ich Ihnen zeigen möchte. Es handelt sich um zwei Klassen, von denen jede einen Verschiebungskonstruktor und eine Funktion enthält, die ein temporäres Ergebnis liefert. Im ersten Fall ruft die Funktion, die ein ...

8 die antwort

std :: vector :: emplace_back und std :: move

Ist die Verwendung von @ von Vorteistd::vector::emplace_back undstd::move zusammen? oder es ist nur redundant dastd::vector::emplace_back wird eine Inplace-Konstruktion durchgeführt? Fälle zur Klarstellung: std::vector<std::string> ...

6 die antwort

Warum wird der Kopierkonstruktor in der Initialisierungsliste von std :: vector aufgerufen?

Ich habe die folgende sehr einfache Klasse: class Foo { public: Foo() {} Foo(const Foo&) = delete; Foo(Foo&&) {} void operator=(const Foo&) = delete; void operator=(Foo&&) {} void dump() const {} }; Die Klasse ist für das Verschieben ...

TOP-Veröffentlichungen

6 die antwort

Default Konstruktor / Zuweisung verschieben und Kopierkonstruktor / Zuweisung löschen

Nach dem Standard, Wenn die Definition einer Klasse X einen Verschiebungskonstruktor nicht explizit deklariert, wird einer nur dann implizit als Standard deklariert, wenn - X hat keinen vom Benutzer deklarierten Kopierkonstruktor, - X hat ...

4 die antwort

Mitgliedsfunktion .begin () und std :: begin ()

Aufruf der Mitgliedsfunktion.begin() vonstd::vector undstd::begin() on rvalues führen zu unterschiedlichen Ausgaben, wie der folgende Test zeigt: vector<int> a{ 1, 2, 3 }; vector<int>::iterator it1 = move(a).begin(); // ...

2 die antwort

Move-Konstruktor für abgeleitete Klasse

Ich habe 2 Klassen: template<typename T> class base{ T t; public: base(base &&b): t(std::move(b.t)){} }; template<typename T, typename T2> class derived : protected base<T>{ T2 t2; public: derived(derived &&d): ...

6 die antwort

Returning an argument passed by rvalue referenc

Wenn ich eine Klasse habeA und Funktionen A f(A &&a) { doSomething(a); return a; } A g(A a) { doSomething(a); return a; } der Kopierkonstruktor wird bei der Rückgabe aufgerufena vonf, aber der move-Konstruktor wird verwendet, wenn von @ ...

2 die antwort

Kann Rust eines Tages die bitweise Kopie während des Verschiebens eines Objekts optimieren?

Betrachten Sie das Snippet struct Foo { dummy: [u8; 65536], } fn bar(foo: Foo) { println!("{:p}", &foo) } fn main() { let o = Foo { dummy: [42u8; 65536] }; println!("{:p}", &o); bar(o); }in ...

4 die antwort

Warum muss ich move auf einer rWertreferenz aufrufen?

Warum ruft der erste Aufruf von @ im Code unten nicht aumkme = mvme_rv Versand anT& operator=(const T&&)? #include <iostream> #include <string> #include <vector> using namespace std; using T = vector<int>; int main() { T mvme(10, 1), mkme; T&& ...

4 die antwort

Was sind die Gründe für unsichere Verschiebungszuweisungsoperatoren in der Standardbibliothek?

Die Standard-Bibliotheksrichtlinie für die Zuweisung von Verschiebungen lautet die Implementierung darf davon ausgehen, dass die Selbstzuweisung niemals stattfinden wird [/a/13127916]; das scheint mir eine wirklich schlechte idee zu sein, ...