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

Оптимизация возвращаемого значения C++
Я новичок в С++, и я немного читал об оптимизации возвращаемого значения в вики, а также на этом веб-сайте, однако мне все еще любопытно, как происходит следующее поведение: using namespace std; class A { public: A() {cout...
635 просмотров
schedule 07.07.2022

Влияет ли возврат по константному значению на оптимизацию возвращаемого значения?
Рассмотрим функцию const std::string f() { return "hello"; } И звонок std::string x = f(); Независимо от того, должны ли возвращаемые значения быть константными или нет, мешает ли тот факт, что возвращаемое значение является...
983 просмотров
schedule 08.07.2022

избежание дублирования кода для const-overload и RVO
Чтобы избежать дублирования кода при работе с const-overload, я написал что-то вроде этого: #include <memory> class A { std::shared_ptr<int> _data; public: const A lightCopy() const { A a; a._data = _data;...
93 просмотров
schedule 02.06.2022

Как C++ ABI справляется с RVO и NRVO?
Меня смущает то, как компилятор и компоновщик справляются с тем фактом, что требования к вызову er функции различаются в зависимости от того, использует ли функция RVO или NRVO. Это может быть мое недоразумение, но я предполагаю, что вообще без...
685 просмотров
schedule 10.03.2023

Сокращение вызовов конструктора копирования
Следующий код является минимальным примером из проекта, над которым я работаю. Основной вопрос в том, что я хочу сократить количество обращений к конструктору копирования, но мне не ясно, как правильно это сделать. #include<iostream> class...
118 просмотров
schedule 07.08.2023

Когда гарантировано применение RVO/применяется с компиляторами C++20
В основных рекомендациях C++ говорится, что F.20: Для «выходных» выходных значений предпочесть возвращаемые значения выходным параметрам. Но затем дает следующее исключение: struct Package { // exceptional case: expensive-to-move...
151 просмотров
schedule 02.10.2022

constexpr if и оптимизация возвращаемого значения
У меня есть этот код: #include <string> class A { public: // A(A const &) = delete; // Code fails if this is uncommented. explicit A(int); explicit A(::std::string const &); private: ::std::string myname_;...
142 просмотров
schedule 24.01.2023