C++, RVO, NRVO и локальные статические объекты

103
13 сентября 2021, 06:40

Рассмотрим следующий код:

struct Object
{
  // ...
};
struct CompoundObject
{
  // ...
  Object object;
};
CompoundObject get()
{
  static Object object;
  CompoundObject compoundObject = {object};
  return compoundObject;
}
int main()
{
  CompoundObject compoundObject = get();
}

Вопрос заключается в следующем: учитывая возможные RVO и NRVO оптимизации, есть ли гарантия того, что object НЕ БУДЕТ перемещен?

Если такие гарантии есть, я бы хотел знать, на чем они основываются.

READ ALSO
Как подключить базу данных mySQL с помощью С++

Как подключить базу данных mySQL с помощью С++

Я пытаюсь подключить базу данных с моего сайта и отображать некоторые строки с помощью С++Поэтому я стараюсь сделать приложение, которое...

84
Как обратиться к глобальной переменной из функции

Как обратиться к глобальной переменной из функции

Как обратиться к глобальной переменной из функции в которой уже имеется переменная с таким же названием? Допустим есть программа

146
Лишнее число в массиве

Лишнее число в массиве

Имею текстовый файл с неким содержимым

94
Задача диофантово уравнение c++

Задача диофантово уравнение c++

Даны натуральные числа a, b, cЕсли уравнение ax+by=c имеет решения в целых числах, то выберите то решение, в котором число x имеет наименьшее неотрицательное...

75