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

Почему Visual Studio не выполняет оптимизацию возвращаемого значения (RVO) в этом случае
Я отвечал на вопрос и рекомендует возвращать по значению для большого типа , потому что я был уверен, что компилятор выполнит оптимизация возврата (RVO) . Но затем мне было указано, что Visual Studio 2013 не выполняет RVO в моем коде. Я нашел...
4969 просмотров

Время защиты блокировки на основе области действия и возвращаемых значений
class C { mutable std::mutex _lock; map<string,string> deep_member; public: auto get_big_lump() { std::unique_lock<std::mutex> lock(_lock); // establish scope guard return deep_member; // copy the stuff while...
1119 просмотров
schedule 23.08.2022

Оптимизация компилятора с возвратом (std::stringstream ss).str()
Следующая функция принимает строку в качестве аргумента и возвращает другую после некоторой обработки. Достаточно ли справедливо предположить, что компилятор выполнит оптимизацию перемещения, и я не буду копировать содержимое строки после...
479 просмотров
schedule 05.11.2022

Как реализация конструктора перемещения влияет на оптимизацию возвращаемого значения?
Рассмотрим следующий фрагмент кода: #include <iostream> #include <string> class A { public: A() { std::cout << "A::A()\n"; } ~A() { std::cout << "A::~A()\n"; } A(const A&) =...
216 просмотров
schedule 10.11.2022

Применяется ли оптимизация к однострочным функциям?
Я не люблю повторяться в коде, но и не хочу терять производительность из-за простых функций. Предположим, что класс имеет operator+ и функцию Add с одинаковой функциональностью (рассматривая первый как удобный способ использования класса в...
139 просмотров
schedule 14.06.2022

Конструктор перемещения для возвращаемых объектов нарушает код С++ 98?
Стандарт не требует, чтобы компилятор выполнял оптимизацию возвращаемого значения (RVO), но тогда, начиная с C++11, результат должен быть перемещен . Похоже, что это может ввести код UB для/разрыва, который был действителен в C++98. Например:...
375 просмотров
schedule 22.12.2022

Требуется ли конструктор/назначение перемещения для запуска RVO в С++ 11?
Например: В принятом ответе https://stackoverflow.com/a/14623480/1423254 Будет ли копирование elision и RVO по-прежнему работать для классов без конструкторов перемещения? Да, RVO все еще срабатывает. На самом деле ожидается, что компилятор...
95 просмотров
schedule 20.09.2023