Tag: rvalue-reference
Eine rvalue reference eine neue Sprache-Funktion in C++11 repräsentiert eine Referenz auf ein rvalue. Zusammen mit Referenz zu reduzieren, Sie werden verwendet, zu implementieren und zu aktivieren move-Semantik und perfect forwarding.
4
Antworten
Ich habe die Möglichkeiten der Bewegen Konstruktoren in C++, und ich Frage mich, was sind einige Möglichkeiten der Einnahme von Vorteil, diese Funktion an einem Beispiel, wie unten. Betrachten Sie diesen code: template<unsigned int N> class Foo
5
Antworten
Ich war lernen durch Verweis übergeben wird, und hier ist der test, den ich gemacht habe: #include <iostream> using namespace std; int i = 0; //If this is uncommented, compiler gives ambiguous definition error. //void paramCheck (string
7
Antworten
Da haben wir die move-Semantik in C++, heute ist es üblich, zu tun, void set_a(A a) { _a = std::move(a); } Die Argumentation ist, dass, wenn a ist ein rvalue, wird die Kopie erstellte, und es wird
2
Antworten
C++11 std::move(x) Funktion nicht wirklich nach überhaupt nichts. Es ist nur eine Besetzung an den r-Wert. Warum wurde das gemacht? Ist das nicht irreführend? Erschwerend kommt hinzu, dass die drei-argument std::move tatsächlich bewegt.. Und vergessen Sie nicht
2
Antworten
Beispiel: Beta_ab&& Beta::toAB() const { return move(Beta_ab(1, 1)); } InformationsquelleAutor Neil G | 2009-07-12
5
Antworten
Gibt es einen Grund, wenn eine Funktion zurückgeben sollte eine RValue-Referenz? Eine Technik, oder trick, oder ein idiom oder Muster? MyClass&& func( ... ); Ich bin mir der Gefahr bewusst Rückgabe Referenzen im Allgemeinen, aber manchmal tun
4
Antworten
Denke, ich habe den folgenden code: class B { /* */ }; class A { vector<B*> vb; public: void add(B* b) { vb.push_back(b); } }; int main() { A a; B* b(new B()); a.add(b); } Angenommen, dass
1
Antworten
Der compiler hält sich beschweren ich bin versucht zu binden eine lvalue, um eine rvalue-Referenz, aber ich sehe nicht, wie. Ich bin neu in C++11, move-Semantik, etc., also bitte Geduld mit mir. Habe ich diese Funktion: template
3
Antworten
Betrachten: #include <cstdlib> #include <memory> #include <string> #include <vector> #include <algorithm> #include <iterator> using namespace std; class Gizmo { public: Gizmo() : foo_(shared_ptr<string>(new string("bar"))) {}; Gizmo(Gizmo&& rhs); //Implemented Below private: shared_ptr<string> foo_; }; /* //doesn't use std::move
1
Antworten
War ich nur spielen, um mit g++ 4.7 (einer der späteren snapshots) mit -std=c++11 aktiviert. Ich habe versucht zu kompilieren, einige meiner vorhandenen code-Basis und in einem Fall, der versäumt etwas verwirrt mich. Ich würde mich freuen,
4
Antworten
Habe ich in einige der neuen features von C++11 und eine die ich bemerkt habe, ist die doppelte kaufmännisches und-Zeichen in der Deklaration von Variablen, wie T&& var. Für ein start, was dieses Tier heißt? Ich wünschte,
6
Antworten
In perfect forwarding, std::forward wird verwendet, um zu konvertieren, die mit Namen rvalue-Referenzen t1 und t2 Unbenannte rvalue-Referenzen. Was ist der Zweck, dies zu tun? Wie würde sich das auf die aufgerufene Funktion inner wenn wir verlassen
5
Antworten
Ich versuche zu verstehen, rvalue-Referenzen und move-Semantik in C++11. Was ist der Unterschied zwischen diesen Beispielen und die von Ihnen tun wird, keine Vektor-Kopie? Ersten Beispiel std::vector<int> return_vector(void) { std::vector<int> tmp {1,2,3,4,5}; return tmp; } std::vector<int> &&rval_ref
4
Antworten
Beispielsweise stdlibc++ verfügt über die folgenden: unique_lock& operator=(unique_lock&& __u) { if(_M_owns) unlock(); unique_lock(std::move(__u)).swap(*this); __u._M_device = 0; __u._M_owns = false; return *this; } Warum nicht nur weisen die beiden __u-Mitglieder *dieses direkt? Nicht die swap-bedeuten, dass __u "
5
Antworten
Gibt es einen Grund, wenn eine Funktion zurückgeben sollte eine RValue-Referenz? Eine Technik, oder trick, oder ein idiom oder Muster? MyClass&& func( ... ); Ich bin mir der Gefahr bewusst Rückgabe Referenzen im Allgemeinen, aber manchmal tun
2
Antworten
beispielsweise: Beta_ab&& Beta::toAB() const { return move(Beta_ab(1, 1)); } InformationsquelleAutor der Frage Neil G | 2009-07-12
8
Antworten
So, nachdem ich diesen wunderbaren Vortrag auf rvalue-Referenzen, dachte ich, dass jede Klasse profitieren würden von solch einer "move-Konstruktor", template<class T> MyClass(T&& other) Bearbeiten und natürlich ein "move-Zuweisungs-operator", template<class T> MyClass& operator=(T&& other) wie Philipp betont in
2
Antworten
Während ich lese boost/shared_ptr.hpp, sah ich diesen code: // generated copy constructor, destructor are fine... #if defined( BOOST_HAS_RVALUE_REFS ) //... except in C++0x, move disables the implicit copy shared_ptr( shared_ptr const & r ): px( r.px ),
5
Antworten
Wie kann ich die Erfassung von Bewegung (auch bekannt als rvalue-Referenz) in einer C++11 lambda? Ich bin versucht, zu schreiben etwas wie dieses: std::unique_ptr<int> myPointer(new int); std::function<void(void)> = [std::move(myPointer)]{ (*myPointer) = 4; }; InformationsquelleAutor der Frage Lalaland
2
Antworten
Ist das folgende snipplet richtige für un-Definition alle anderweitig generierten Methoden und Konstruktoren für eine Klasse? struct Picture { //'explicit': no accidental cast from string to Picture explicit Picture(const string &filename) { /* load image from file