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