Раньше мне учили, что при передаче std :: string в функцию или даже в конструктор для передачи по ссылке const вместо передачи по значению из-за копирования. пример 1: - параметр функции void ...
Я только что закончил слушать радио-интервью подкаста Software Engineering со Скоттом Мейерсом о C ++ 0x. Большинство новых функций имело смысл для меня, и сейчас я действительно взволнован C ++ 0x, ...
При передаче ссылки rvalue (Movable & amp; a) в функцию Movable b (a) каким-то образом запускает созданный конструктор удаленной копии. main.cpp: В функции 'void func (Movable & amp;)': main.cpp: 25: ...
Как я попросил в конструкторе/операторе Перемещения =, и через некоторое время я согласовал и признал, что право отвечает на тот вопрос, я просто думал, если будет он быть полезным иметь что-то как "перемещение...
Меня смущает тип переменных rvalue в C ++. Код ниже дает мне следующую ошибку ошибки компилятора: не может связывать ссылку rvalue типа 'int & amp; & amp;' с lvalue типа 'int' f1 (b); ...
Скажем, что у меня есть этот класс, например: #include & lt; cstdint & gt; class Color {private: uint8_t red_; uint8_t green_; uint8_t blue_; public: Color (); Цвет (uint8_t красный, uint8_t ...
В ответе на вопрос о станд.:: стек:: поп () я утверждал, что причина, поп не возвращает значение, из соображения безопасности исключения (что происходит, если конструктор копии бросает). @Konrad...
Контейнеры STL имеют две перегрузки для оператора [], одну константу и одну неконстантную и две соответствующие typedef. шаблон & lt; class T & gt; struct vector {T * data_; используя value_type = T; ...
Согласно N3485 §23.3.2.2: (...) неявный конструктор перемещения и оператор присваивания перемещения для массива требуют, чтобы T было MoveConstructible или MoveAssignable, соответственно. Итак, std :: array ...
У меня есть класс, содержащий указатели на объекты и его подкласс. Конструктор перемещения «подкласс» Я хочу вызвать конструктор перемещения базового класса по понятным причинам. С компилятором MSVS 2017 это ...
Я пытаюсь понять семантику перемещения c ++ 11 и создал следующий проект песочницы: main.cpp #include "my-class.h" #include & lt; iostream & gt; MyOtherClass getRValue (void) {MyOtherClass ...
Предположим, что f1 является объектом класса Foo. Построим еще один объект того же класса Foo, из f1. Учитывая, что для Foo определен конструктор перемещения, строится ли f2 всегда копия ...
В C ++ 11 была введена «семантика перемещения», реализованная через два специальных члена: конструктор перемещения и назначение перемещения. Обе эти операции оставляют удаленный объект созданным. Не будет ...
Кажется, что основной совет относительно rvalues 0x C++ состоит в том, чтобы добавить конструкторов перемещения и переместить операторы в Ваши классы до реализации по умолчанию компиляторов их. Но ожидание является проигрывающей стратегией, если Вы исполь
В C++11 параметры-значения (и другие значения) имеют неявное перемещение при возврате: A func(A a) { return a; // использует A::A(A&&), если он существует
} По крайней мере, в MSVC 2010, ссылка на rvalue ...
У меня есть класс file_manager, который отслеживает файлы в данном каталоге. Я использую его как модель для файлового интерфейса, похожего на Windows Explorer или macOS Finder. У file_manager есть различные методы find () для ...
Я пытаюсь понять rvalue ссылки и переместить семантику C ++ 11. В чем разница между этими примерами, и какой из них не будет делать векторные копии? Первый пример std :: vector <...
У меня есть std :: vector объектов определенного класса A. Класс нетривиален, и для него определены конструкторы копирования и конструкторы перемещения. std :: vector myvec; Если я заполню вектор A ...
В последнее время я изучал ссылки на rvalue и пришел к выводу, что использовать pass -по значению везде, где будет сделана полная копия объекта (для полной ...
Возможный дубликат: дни передачи const std::string & в качестве параметра закончились? Должен ли я передавать std::string по значению или по ссылке (в не встроенную функцию), если семантика перемещения ...
Возможный дубликат: как обеспечить семантику перемещения при увеличении вектора? insert, push_back и emplace(_back) могут привести к перераспределению std::vector. Я был озадачен, увидев, что следующий код...
Этот вопрос исходит из проблем, поднятых в этом ответе. Обычно мы определяем операторы присваивания копирования для типа T как T& operator=(const T&), а операторы присваивания перемещения для типа T как T&...
Рассмотрим случай, когда "целые" объекты с включенной семантикой перемещения возвращаются из функций, как с std :: basic_string <>: std :: wstring build_report () const
{std :: wstring report; ...
...
Как Насколько я понимаю, одной из целей добавления семантики перемещения является оптимизация кода путем вызова специального конструктора для копирования «временных» объектов. Например, в этом ответе мы видим, что он может ...
Возможный дубликат: Кто-нибудь может объяснить мне двигательную семантику? Кто-нибудь может указать мне на хороший источник или объяснить здесь, что такое семантика движения?
Следуя комментарию, который я сделал по этому поводу: передача std::vector в конструктор и семантика перемещения
Необходим ли std::move в следующем коде, чтобы гарантировать, что возвращаемое значение является значением x? std:...
Учитывая, что класс на самом деле является перемещаемым, ручная реализация конструктора перемещения и оператора присваивания перемещения для класса быстро становится утомительной. Мне было интересно, когда это на самом деле тяжело, ...