rvalue-reference
Co oznacza T& & (double ampersand) w C++11?
Przyglądałem się kilku nowym funkcjom C++11 i jedną z nich zauważyłem jest podwójne ampersand w deklarowaniu zmiennych, takic ... ka wydaje się być podwójnym odniesieniem (jak podwójne wskaźniki w stylu C T** var), ale trudno mi myśleć o przypadku użycia.
Rule-of-Three staje się Rule-of-Five z C++11?
Więc po obejrzeniu tego wspaniałego wykładu na temat referencji rvalue, pomyślałem, że każda klasa skorzysta z takiego "kons ... . Tak jak ty powinieneś mieć copy-ctor, operator przypisania i destruktor, jeśli dotyczą wymienione wcześniej punkty.
Myśli?
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();
Czy zwracanie przez rvalue reference jest bardziej efektywne?
Na przykład:
Beta_ab&&
Beta::toAB() const {
return move(Beta_ab(1, 1));
}
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?
Move capture w lambda
Jak przechwycić przez move (znany również jako rvalue reference) w C++11 lambda?
Próbuję napisać coś takiego:
std::unique_ptr<int> myPointer(new int);
std::function<void(void)> example = [std::move(myPointer)]{
*myPointer = 4;
};
C++11 make pair z podanymi parametrami szablonu nie kompiluje
Po prostu bawiłem się z g++ 4.7 (jeden z późniejszych migawek) z włączoną-std=c++11. Próbowałem skompilować część mojej istni ... .
g++ 4.4 kompiluje ten kod bez żadnych problemów.
usunięcie -std = c++11 również kompiluje z kodem bez żadnych problemów.
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)
}
Dlaczego niektórzy używają swap do zadań move?
Na przykład stdlibc++ ma następujące wartości:
unique_lock& operator=(unique_lock&& __u)
{
if(_M_owns)
... padku swap wykonuje niepotrzebną pracę. Co przegapiłem?
(unique_lock::swap po prostu wykonuje std:: swap na każdym członku)
Jak można wywołać STD:: forward na wszystkich argumentach w zmiennej funkcji?
Właśnie pisałem generic object factory i używałem meta-biblioteki preprocesora boost, aby stworzyć zmienny szablon(używając 2 ... ić, wymagałby ręcznego rozpakowywania z ...params i jeszcze nie jestem tam. Czy istnieje szybsza składnia, która by działała?
Jak właściwie wdrożyć zasadę pięciu?
UPDATE na dole
P1: jak zaimplementowałbyś regułę pięciu dla klasy, która zarządza raczej dużymi zasobami,
ale z których ... ze znane), Muszę stwierdzić, że to nie ma znaczenia i dlatego pozostaje do gustu dewelopera. W takim razie wybrałbym numer 2.
Czy jest jakiś przypadek, w którym użyteczny jest zwrot referencji RValue ( & & )?
Czy istnieje powód, dla którego funkcja powinna zwracać referencję RValue? Technika, sztuczka, idiom czy wzór?
MyClass&& ... ym moglibyśmy na tym zyskać? Prawdopodobnie różni się to, gdy pisze się kod biblioteki lub API, w porównaniu do kodu klienta?
Najlepsza forma dla konstruktorów? Przekazać przez wartość lub odniesienie?
Zastanawiam się nad najlepszą formą dla moich konstruktorów. Oto przykładowy kod:
class Y { ... }
class X
{
public:
X(co ... daniem kompilator potrafi najlepiej, jak i w moim same pytania. Proszę poprawić którekolwiek z nich, jeśli są nieprawidłowe.
Dlaczego zdefiniowany przez użytkownika konstruktor move-constructor wyłącza Ukryty Konstruktor kopiujący?
Gdy czytam boost/shared_ptr.hpp, widziałem ten kod:
// generated copy constructor, destructor are fine...
#if defined( BO ... in C++11, move disables the implicit copy"? Czy w C++11 zawsze piszemy kopię ctor samodzielnie, aby zapobiec takiej sytuacji?
Rozdzielczość przeciążenia między obiektem, rvalue reference, const reference
Biorąc pod uwagę wszystkie trzy funkcje, to wywołanie jest niejednoznaczne.
int f( int );
int f( int && );
int f( in ... przeciążenie T const & i T && oraz jawne kopiowanie. Ale nawet nie jestem pewien, czy to jest ściśle standardowe.
Przeciążenie odniesień do wartości R i powielanie kodu
Rozważ co następuje:
struct vec
{
int v[3];
vec() : v() {};
vec(int x, int y, int z) : v{x,y,z} {};
vec(co ... zasowych. Ale nie podoba mi się powielanie kodu, który wprowadza. Czy mogę osiągnąć to samo przy mniejszej liczbie powtórzeń?
Unikaj wykładniczego wzrostu referencji const i rvalue w konstruktorze
Koduję niektóre klasy template dla biblioteki uczenia maszynowego i mam do czynienia z tym problemem wiele razy. Używam główn ... amp;& optimizer) : _loss(std::move(loss)), _optimizer(std::move(optimizer)) {}
Czy jest jakiś sposób, aby tego uniknąć?
Użycie rvalue reference members?
Zastanawiałem się, jakie zastosowanie ma członek odniesienia rvalue
class A {
// ...
// Is this one useful?
Foo &&f;
};
Czy ma jakieś zalety lub wady w porównaniu z członkiem referencyjnym lvalue? Co to jest prime usecase of it?
Czy powinienem zwrócić referencję rvalue (przez std:: move ' ING)?
A C++Next blog post said that
A compute(…)
{
A v;
…
return v;
}
Jeśli A ma Dostępny konstruktor copy lub mov ... nie, ale im więcej studiowałem, tym bardziej byłem zdezorientowany. Dlaczego powinniśmy zwracać wartość za pomocą std::move?
Jaki jest przypadek użycia przeciążenia funkcji Członkowskich na kwalifikatorach referencyjnych?
C++11 umożliwia przeciążanie funkcji składowych w oparciu o kwalifikatory referencyjne:
class Foo {
public:
void f() & ... jalny przypadek użycia, w którym komitet zdecydował się go nie stosować. Więc, ponownie, jaki jest rozsądny przypadek użycia?
- 1
- 2