Size: a a a

2020 July 23

M

Max in supapro.cxx
Побитый Кирпич
Если ты делаешь std::move, то функция должна принимать std::string&& или std::string
А как лучше?
источник

ПК

Побитый Кирпич... in supapro.cxx
Max
А как лучше?
Смотря что твоя функция делает
источник

ПК

Побитый Кирпич... in supapro.cxx
Там куча вариантов какие могут быть типы параметров и возвращаемого значения
источник

ПК

Побитый Кирпич... in supapro.cxx
Зависят от тела функции
источник

M

Max in supapro.cxx
Побитый Кирпич
Смотря что твоя функция делает
Да просто сверху принимает параметры, потом прокидывает до последней функции инитящий путь, например. Путь больше нигде не используется, просто инитит член класса, в котором этот путь хранится
источник

M

Max in supapro.cxx
Там цепочка функций, так что надо либо std::string&& либо каждый раз мувать на std::string?
источник

Е

Егор in supapro.cxx
🎄🎊 R 🎅 Tb| ✡️ 🎊🎄
In the initialization of an object, when the initializer expression is a prvalue of the same class type (ignoring cv-qualification) as the variable type https://en.cppreference.com/w/cpp/language/copy_elision
Если тип выражения в возврате должен совпадать с типом возврата, то почему тут работает рво https://godbolt.org/z/6hKss7?
источник

ПК

Побитый Кирпич... in supapro.cxx
Max
Да просто сверху принимает параметры, потом прокидывает до последней функции инитящий путь, например. Путь больше нигде не используется, просто инитит член класса, в котором этот путь хранится
Это в конструкторе что ли?
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄... in supapro.cxx
Danya
Нет, не сможешь, он всё равно её скопирует, потому что у тебя константная строка
Если то хочешь, чтобы у тебя временный объект принимался, то надо сделать std::string&& и на этом параметре тогда делать std::move
источник

M

Max in supapro.cxx
Побитый Кирпич
Это в конструкторе что ли?
Не, к сожалению, не в конструкторе
источник

ee

elias eliatto in supapro.cxx
Привет! Почему происходит heap corruption в деструкторе класса A,  если инициализировать член класса B с недефолтным конструктором в списке инициализации конструктора класса A? A::A():m_b_instance(false){}
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄... in supapro.cxx
Max
Не, к сожалению, не в конструкторе
источник

AS

Anatoly Shirokov in supapro.cxx
elias eliatto
Привет! Почему происходит heap corruption в деструкторе класса A,  если инициализировать член класса B с недефолтным конструктором в списке инициализации конструктора класса A? A::A():m_b_instance(false){}
мы сегодня каким способом гадаем?
источник

ПК

Побитый Кирпич... in supapro.cxx
Max
Не, к сожалению, не в конструкторе
Если функция больше нигде не юзается (внутренняя для класса), то можешь принимать там string&&. Иначе возможно лучше рассмотреть вариант с forward reference
источник

D

Danya in supapro.cxx
elias eliatto
Привет! Почему происходит heap corruption в деструкторе класса A,  если инициализировать член класса B с недефолтным конструктором в списке инициализации конструктора класса A? A::A():m_b_instance(false){}
слова -- ничто, код -- всё
источник

ПК

Побитый Кирпич... in supapro.cxx
elias eliatto
Привет! Почему происходит heap corruption в деструкторе класса A,  если инициализировать член класса B с недефолтным конструктором в списке инициализации конструктора класса A? A::A():m_b_instance(false){}
У тебя где-то в коде ошибка
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄... in supapro.cxx
Max
Там цепочка функций, так что надо либо std::string&& либо каждый раз мувать на std::string?
Код покажи лучше
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄... in supapro.cxx
std::move не нужон
источник

ПК

Побитый Кирпич... in supapro.cxx
Max
Там цепочка функций, так что надо либо std::string&& либо каждый раз мувать на std::string?
по значению это универсальный вариант если надо принимать lvalue и rvalue и при этом внутри функции брать владение. Тогда пользователь функции имеет выбор - копировать, если ему ещё нужен объект, или мувать, если уже не нужен.
Но если у тебя внутренняя функция, которой ты только rvalue передаёшь, то норм вариант string&&
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄... in supapro.cxx
Побитый Кирпич
по значению это универсальный вариант если надо принимать lvalue и rvalue и при этом внутри функции брать владение. Тогда пользователь функции имеет выбор - копировать, если ему ещё нужен объект, или мувать, если уже не нужен.
Но если у тебя внутренняя функция, которой ты только rvalue передаёшь, то норм вариант string&&
string_view чем не угодил?
источник