Вопросы по теме 'return-value-optimization'
константная ссылка на временную и копируемую - С++
Пожалуйста, рассмотрите следующий код,
struct foo
{
foo()
{
std::cout << "Constructing!" << std::endl;
}
foo(const foo& f)
{
std::cout << "Copy constructing!" << std::endl;
}...
2766 просмотров
schedule
13.10.2022
Как вернуть fstream (C++0x)
Я думаю, что сразу приступлю к этому и начну с кода:
#include <iostream>
#include <fstream>
#include <string>
class test : public std::ofstream
{
public:
test(const std::string& filename) {...
2937 просмотров
schedule
17.06.2022
Копирование-исключение автоматической переменной для возврата
Мне интересно, если в C++0x "12.8 Копирование и перемещение объектов класса [class.copy] параграф 31" , когда происходит copy elision , точно:
Когда выполняются определенные критерии, реализации разрешается опускать конструкцию...
418 просмотров
schedule
01.06.2022
Принудительное построение RVO/перемещения при возврате по значению
Скажем, у меня есть объект 'foo' с конструктором копирования и конструктором перемещения, а также функция
foo f() {
foo bar;
/* do some work */
return bar;
}
В стандарте указано, что компилятор попытается сделать: NRVO, возврат по...
911 просмотров
schedule
04.05.2023
Оптимизация возвращаемого значения при возврате по ссылке
Я прочитал много статей об оптимизации возвращаемого значения. Тем не менее, я не уверен, что полностью понимаю, происходит ли это в следующем случае (адреса на самом деле всегда идентичны):
#include "stdafx.h"
class Type
{
public:
Type(int...
576 просмотров
schedule
27.04.2022
Как отключить оптимизацию возвращаемого значения С++ только для одного типа?
Я столкнулся с ситуацией, когда мне действительно нужно выполнить нетривиальный код в конструкторе копирования/операторе присваивания. От этого зависит правильность алгоритма.
Хотя я мог бы отключить оптимизацию возвращаемого значения с помощью...
1091 просмотров
schedule
30.09.2023
Может ли возврат заключенного в фигурные скобки инициализатора привести к копии на С++?
Пример:
struct s { int a; };
s func() { return {42}; }
int main() {
s new_obj = func(); // line 6
(void) new_obj;
return 0;
}
Это работает. Что произойдет, если мы предположим, что наш компилятор не выполняет RVO?
func...
499 просмотров
schedule
19.03.2022
Конструктор копирования не вызывается при возврате из перегруженного оператора + в перегруженный оператор =
Рассмотрим следующий код:
#include <iostream>
using namespace std;
class loc
{
int longitude, latitude;
public:
loc() {}
loc(int lg, int lt)
{
longitude = lg;
latitude = lt;...
138 просмотров
schedule
12.05.2022
Оптимизация возвращаемого значения и копирование в C
Некоторые люди не знают, что можно передавать и возвращать структуры по значению в C . Мой вопрос касается компилятора, который делает ненужные копии при возврате структур в C. Используют ли компиляторы C, такие как GCC, Оптимизация возвращаемого...
5764 просмотров
schedule
19.11.2022
Каково влияние «явного» ключевого слова на оптимизацию возвращаемого значения (RVO)?
Следующий код работает отлично (показывая RVO):
struct A {
A (int) { cout << "A::A()\n"; } // constructor
A (const A&) { cout << "A::A(const A&)\n"; } // copy constructor
};
A foo () { return A(0); }
int main () {
A...
258 просмотров
schedule
09.03.2023
Почему возврат std::Optional иногда перемещает, а иногда копирует?
См. приведенный ниже пример возврата необязательного параметра UserName — перемещаемый/копируемый класс.
std::optional<UserName> CreateUser()
{
UserName u;
return {u}; // this one will cause a copy of UserName
return u; // this...
3060 просмотров
schedule
23.11.2022
RVO при преобразовании возвращаемого значения
Я борюсь со сложностью преобразований и приведения типов, и я не могу найти в Интернете совет, который четко гарантировал бы эффективное преобразование при возврате из функции. У меня есть два класса: Base и Derived, где Derived не имеет...
53 просмотров
schedule
27.03.2022