Результаты поиска по запросу "move-semantics"

6 ответов

, если сильно помогает производительности, если вы, например, поместите свой класс в

ИТЬвнизу q1:Как бы вы реализовалиправило пяти [https://stackoverflow.com/questions/4782757/rule-of-three-becomes-rule-of-five-with-c0x] для класса, который управляет довольно большими ресурсами, но вы хотите, чтобы он передавался по значению, ...

2 ответа

Почему std :: move предотвращает RVO?

Во многих случаях при возврате локального из функции, RVO вступает в силу. Однако я думал, что явно используяstd::move по крайней мере, принудительное перемещение, когда RVO не происходит, но это RVO все еще применяется, когда это возможно. ...

3 ответа

@ildjarn Не с моими компиляторами, это не так. Семантика перемещения недоступна в большинстве компиляторов, а те, которые я использую, не используют их в стандартной библиотеке, даже если они доступны.

у заполнить std :: vector (или какой-нибудь другой контейнер STL): class Foo { public: Foo(int _n, const Bar &_m); private: std::vector<Foo> fooes_; }1. Хорошо выглядящий ctor, высокая производительность std::vector<Foo> get_vector(int _n, ...

ТОП публикаций

1 ответ

Я целенаправленно использовал терминологию ОП в своем ответе. Стандарт стремится быть точным, но это паршивый учебник. Я не (и до сих пор не понимаю), что я был расплывчатым. Это, конечно, распространенная ошибка, от которой я не застрахован. Я с удовольствием уточню, знаю ли я, какие части моего ответа были неоднозначными. Моя цель - распространять знания, а не сбивать их с толку.

тим, у нас есть следующий код: std::vector<int> f() { std::vector<int> y; ... return y; } std::vector<int> x = ... x = f();Кажется, у компилятора есть два подхода: (a) NRVO: уничтожить x, затем построить f () вместо x. (b) Перемещение: ...

5 ответов

 следующее:

ительно недавно,много [https://stackoverflow.com/questions/6380862/how-to-provide-a-swap-function-for-my-class] вопросов [https://stackoverflow.com/questions/6402463/swap-for-custom-type-in-c-use-adl-or-template-specialization] ...

3 ответа

 по мере того, как компиляторы набирают скорость с C ++ 0x и реализации становятся зрелыми

отрим случай, когда «целые» объекты с включенной семантикой перемещения возвращаются из функций, как сstd::basic_string<>: std::wstring build_report() const { std::wstring report; ... return report; } Можно ли реально ожидать, что я сделаю ...

3 ответа

std :: vector <Foo>, когда некоторые члены Foo являются ссылками

Я часто предпочитаю использовать ссылки, а не указатели, когда это возможно, это делает синтаксис более чистым, по моему мнению. В этом случае у меня есть класс: class Foo { public: Foo(Bar & bar) : bar_(bar) {} private: Bar & bar_; ...

4 ответа

Это все равно что ожидать, что оператор + сложит все вместе. Возможно, его нет в Стандарте, но это ожидаемое и вежливое поведение, чтобы уничтожить то, что вы назначаете.

мер, stdlibc ++ имеет следующее: 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; }Почему бы просто не назначить двух членов __u * ...

3 ответа

Ход какие броски?

Насколько я понимаю, move-constructors и move-assign должны быть помечены как noexcept, чтобы компилятор мог их использовать, например, при перераспределении внутри вектора. Тем не менее, есть ли какой-нибудь реальный случай, когда команда ...

3 ответа

Назначение перемещения несовместимо со стандартным копированием и обменом

Тестирование новой семантики Move. Я только что спросил о проблемах, которые у меня были с конструктором Move. Но, как выясняется в комментариях, проблема в том, что оператор «Назначение перемещения» и оператор «Стандартное назначение» ...