Вопросы по теме 'rvo'

Почему возникает ошибка C2248, когда в приведенном ниже коде конструктор копирования является частным?
Этот код испускает error C2248: 'A::A' : cannot access private member declared in class 'A' в VS2010, хотя RVO не требует конструктора копирования. Чтобы доказать это, просто сделайте общедоступным объявление A(const A&); ниже, и код будет...
504 просмотров
schedule 13.09.2021

Добавлена ​​ли новая оптимизация возвращаемого значения переменной?
Мы все это знаем Foo returnAFoo() { return Foo(); } будет скомпилирован с оптимизацией возвращаемого значения, поэтому копия значения не будет сделана, даже если конструктор копирования Foo имеет побочные эффекты. Но будет Foo...
139 просмотров
schedule 12.09.2021

Как shared_ptr увеличивает счетчик при передаче по значению?
У меня есть этот пример кода ниже. Я немного знаю о RVO (оптимизация возвращаемого значения) и о том, как конструктор копирования и оператор присваивания пропускаются во время оптимизации, а возвращаемое значение помещается непосредственно в память...
1328 просмотров
schedule 01.11.2021

Передает ли передача векторной ссылки право собственности на ее данные?
Как лучше всего передать право собственности на вектор и его данные? В идеальном мире это работало бы примерно так: std::vector<int>& SpitAVector(int input) { std::vector<int> result; result.push_back(input); return...
675 просмотров
schedule 09.06.2022

Есть ли оптимизация на уровне языка, такая как RVO и NRVO?
RVO — это оптимизация компилятора, но она может обеспечить действительно полезный прирост производительности. Однако это не гарантируется и на него нельзя полагаться. Есть ли что-нибудь в самом стандарте языка, которое может оптимизировать...
337 просмотров
schedule 21.07.2022

Копируется объект или нет, когда срабатывает RVO/NRVO?
Я не могу понять определение RVO (и NRVO) из-за множества вопросов, подобных этому , которые мне кажутся предполагающими что RVO опускает конструктор копирования. Теперь согласно 12.8.15 В таких случаях реализация рассматривает источник и...
421 просмотров
schedule 25.07.2022

Может ли виртуальная функция быть кандидатом на RVO (оптимизация возвращаемого значения)?
Могут ли компиляторы C++ применять RVO для виртуальных функций? В таком случае: class AbstractReader { //... public: virtual std::vector<float> getFloatVector() = 0; //... } class XmlReader : public AbstractReader { //... public:...
1094 просмотров
schedule 16.12.2022

Я возвращаю неназванный объект из функции. Почему РВО все еще срабатывает?
Относительно этого: Почему std::move предотвращает RVO? кто-то написал, что: "Следовательно в операторе возврата исключение копии может произойти только в том случае, если выражение является именем локальной переменной " Однако я сделал...
286 просмотров
schedule 08.06.2023

C++: RVO, NRVO и возврат локальных объектов
Я только что прочитал об RVO (оптимизация возвращаемого значения) и NRVO (оптимизация именованного возвращаемого значения). Ниже приведены два примера //Example of RVO Bar Foo() { return Bar(); } //Example of NVRO Bar Foo() { Bar bar;...
571 просмотров
schedule 29.10.2022

Когда на самом деле вызывается конструктор перемещения, если у нас есть (N)RVO?
Из нескольких вопросов здесь, посвященных SO, я понял, что (N)RVO предотвращает вызов конструктора перемещения, когда объект возвращается по значению. Классический пример: struct Foo { Foo() { std::cout << "Constructed\n"; }...
377 просмотров
schedule 15.01.2023