Size: a a a

2020 July 23

JJ

John Johnson in supapro.cxx
Дмитрий
Проект -> Свойства -> Свойства конфигурации -> С/С++ -> Создание кода -> Библиотека времени выполнения. Для Debug-конфигурации выбрать Многопоточная отладка (/MTd), для Releade - Многопоточная (/MT).
спасибо! я бы сам никогда не нашел
источник

M

Max in supapro.cxx
Danya
Не надо делать return std::move
Спасибо. А то каждый раз ступор, когда возвращаюсь в программирование в С++.
А не подскажешь, если у меня в функцию сверху приходит const std::string &str, то я могу её присвоить члену класса с std::move, чтобы компилятор оптимизировал всё?
источник

D

Danya in supapro.cxx
Max
Спасибо. А то каждый раз ступор, когда возвращаюсь в программирование в С++.
А не подскажешь, если у меня в функцию сверху приходит const std::string &str, то я могу её присвоить члену класса с std::move, чтобы компилятор оптимизировал всё?
Нет, не сможешь, он всё равно её скопирует, потому что у тебя константная строка
Если то хочешь, чтобы у тебя временный объект принимался, то надо сделать std::string&& и на этом параметре тогда делать std::move
источник

ПК

Побитый Кирпич... in supapro.cxx
Max
Спасибо. А то каждый раз ступор, когда возвращаюсь в программирование в С++.
А не подскажешь, если у меня в функцию сверху приходит const std::string &str, то я могу её присвоить члену класса с std::move, чтобы компилятор оптимизировал всё?
Если ты делаешь std::move, то функция должна принимать std::string&& или std::string
источник

🎄T

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

ПК

Побитый Кирпич... in supapro.cxx
🎄🎊 R 🎅 Tb| ✡️ 🎊🎄
А что там по copy ellision
Copy elision работает если ты по значению возвращешь и в return пишешь:
return string{...};
источник

ПК

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

Е

Егор in supapro.cxx
с какого стандарта пофиксили auto i{1} - int а не инит лист?
источник

ПК

Побитый Кирпич... in supapro.cxx
Егор
с какого стандарта пофиксили auto i{1} - int а не инит лист?
С 14 вроде
источник

D

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

D

Danya in supapro.cxx
Мне казалось, что 17
источник

DP

Denis Paukaev in supapro.cxx
Danya
std::string& тоже можно, но шанс отстрела ног повышается))
можно но это кривизна
источник

ПК

Побитый Кирпич... in supapro.cxx
Danya
std::string& тоже можно, но шанс отстрела ног повышается))
std::string& это уже значит, что семантика функции - мув некоторого lvalue. В принципе валидно, но должно отражаться в названии
источник

ПК

Побитый Кирпич... in supapro.cxx
У того же std::move именно такая семантика)
источник

DP

Denis Paukaev in supapro.cxx
by value лучше, не понятно, зачем там ссылки
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄... in supapro.cxx
Danya
Мне казалось, что 17
источник

DP

Denis Paukaev in supapro.cxx
либо городить 2 конструктора
источник

Е

Егор in supapro.cxx
это временный баг был чтоль?
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄... in supapro.cxx
Побитый Кирпич
Copy elision работает если ты по значению возвращешь и в return пишешь:
return string{...};
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
источник

M

Max in supapro.cxx
Danya
Нет, не сможешь, он всё равно её скопирует, потому что у тебя константная строка
Если то хочешь, чтобы у тебя временный объект принимался, то надо сделать std::string&& и на этом параметре тогда делать std::move
А, согласен. Туплю-туплю.
источник