Вопросы по теме '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