move-semantics

Czym jest semantyka ruchu?

Właśnie skończyłem słuchać audycji Software Engineering radio wywiad ze Scottem Meyersem dotyczący C++0x. Większość nowych ... ie sens i jestem teraz podekscytowany C++0x, z wyjątkiem jednej. Nadal nie rozumiem semantyki ruchu ... Co to dokładnie jest?

Czym jest semantyka ruchu?

Właśnie skończyłem słuchać audycji Software Engineering radio wywiad ze Scottem Meyersem dotyczący C++0x. Większość nowych ... mnie sens i jestem teraz podekscytowany C++0x, z wyjątkiem jednej. Nadal nie rozumiem semantyki ruchu ... Czym dokładnie są?

C++11 rvalues and move semantyka confusion (return statement)

Próbuję zrozumieć referencje rvalue i przenieść semantykę C++11. Jaka jest różnica między tymi przykładami, a który z nich n ... ector<int> tmp {1,2,3,4,5}; return std::move(tmp); } std::vector<int> &&rval_ref = return_vector();

push back vs emplace back

Jestem trochę zdezorientowany co do różnicy między push_back i emplace_back. void emplace_back(Type&& _Val); void pu ... l); Ponieważ istnieje push_back przeciążenie biorąc referencję rvalue nie bardzo rozumiem, jaki cel emplace_back staje się?

Co to jest "rvalue reference for * this"?

W clang ' s C++11 status page pojawiła się propozycja o nazwie "rvalue reference for *this". Przeczytałem sporo o referencja ... zycją: N2439 (Rozszerzenie semantyki move NA *this), ale też nie dostaję stamtąd zbyt wielu przykładów. Co to jest temat?

Co to jest STD:: move () i kiedy powinno być używane?

Co to jest? Co to robi? Kiedy należy go stosować? Dobre linki są doceniane.

Czy nowoczesny C++ da ci wydajność za darmo?

Czasami twierdzi się, że C++11/14 może zwiększyć wydajność nawet podczas kompilacji kodu C++98. Uzasadnienie jest zwykle zgod ... uchamiane szybciej (unikaj kopiowania, ale jeśli możesz wymyślić coś jeszcze poza semantyką move, też byłbym zainteresowany)

Jaka jest zaleta wykorzystania odwołań przekazujących w pętlach opartych na zakresach?

const auto& wystarczy, jeśli chcę wykonywać operacje tylko do odczytu. Jednak wpadłem na for (auto&& e : v) // ... tej na zakresie? Proszę skoncentrować się na pytaniu: dlaczego miałbym używać auto & & w oparciu o zakres dla pętli?

Operator move assignment i ' if (this!= & rhs)"

W operatorze przypisania klasy, zwykle musisz sprawdzić, czy przypisany obiekt jest obiektem wywołującym, więc nie spieprzysz ... y jest kiedykolwiek sytuacja, w której this == &rhs byłaby prawdziwa? ? Class::operator=(Class&& rhs) { ? }

Dlaczego `std:: move 'nazywa się' STD:: move'?

Funkcja C++11 std::move(x) tak naprawdę niczego nie porusza. To tylko rzut do wartości R. Dlaczego to zrobiono? Czy to nie wprowadza w błąd?

Jak std:: move() przenosi wartości do wartości R?

Okazało się, że nie do końca rozumiem logikę std::move(). Na początku wygooglowałem go, ale wygląda na to, że są tylko doku ... zelkie dokumenty, które mogę uzyskać w Internecie, będą mile widziane. (Jeśli możesz to wyjaśnić, to też będzie niesamowite).

Po co kopiujemy?

Widziałem gdzieś kod, w którym ktoś zdecydował się skopiować obiekt, a następnie przenieść go do członka danych klasy. To poz ... go jak std::string? jaki byłby powód, dla którego autor zdecydował się na / align = "left" / Kiedy powinnam to zrobić sama?

Kiedy zrobić Typ nie-ruchomy w C++11?

Byłem zaskoczony, że to nie pojawia się w moich wynikach wyszukiwania, myślałem, że ktoś już o to pytał, biorąc pod uwagę prz ... dobry pomysł) zrobić klasę nie-ruchomą w C++11? (powody Inne niż problemy z kompatybilnością z istniejącym kodem, czyli.)

Jaka jest zaleta stosowania odwołań uniwersalnych w pętlach opartych na zakresach?

const auto& wystarczy, jeśli chcę wykonywać operacje tylko do odczytu. Jednak wpadłem na for (auto&& e : v) // ... tej na zakresie? Proszę skoncentrować się na pytaniu: dlaczego miałbym używać auto & & w oparciu o zakres dla pętli?

Kiedy należy użyć STD:: move na zwracanej wartości funkcji? [duplikat]

To pytanie ma już odpowiedź tutaj: c++11 Return value optimization or move? [duplicate] ... ould the compiler know? return std::move(foo); //so here the move is needed, right? } Tam potrzebny jest ruch, jak sądzę?

Jak używać niestandardowego deletera z członkiem STD:: unique PST?

Mam klasę z członkiem unique_ptr. class Foo { private: std::unique_ptr<Bar> bar; ... }; Bar jest klasą zewnę ... t; bar(create(), [](Bar* b){ destroy(b); }); ... } Czy jest sposób, aby to zrobić z std::unique_ptr jako członek klasy?

Passing std:: string by Value or Reference [duplicate]

Możliwy duplikat:Czy dni przekazywania const std:: string & jako parametr są skończone? Czy powinienem przekazać ... inlinowanej), jeśli semantyka move jest obsługiwana? A co z implementacjami wykorzystującymi small string optimization (SSO)?

Czy Mogę zazwyczaj / zawsze używać std:: forward zamiast std:: move?

Oglądałem wykład Scotta Meyersa na temat uniwersalnych odniesień z konferencji C++ and Beyond 2012 i wszystko ma sens do tej ... ::move: void doWork(Widget&& param) // move { // ops and exprs using std::forward<Widget>(param) }

Co mogę zrobić z obiektem przeniesionym?

Czy standard określa dokładnie, co mogę zrobić z obiektem po jego przeniesieniu? Kiedyś myślałem, że wszystko, co można zrobi ... znaleźć te szczegóły w standardzie? (przy okazji, dlaczego jest T c = std::move(a); zamiast T c(std::move(a)); w linii 1?)

Dlaczego nie ma domyślnego move-assignment/move-constructor?

Jestem prostym programistą. Zmienne członków mojej klasy najczęściej składają się z POD-typów i STL-kontenerów. Z tego powod ... świetne makro do tego. A jeśli nie wiesz, jeśli zaimplementujesz semantykę move-semantics, możesz usunąć swap member funkcja.