Size: a a a

2020 April 13

ПК

Паша Калугин in pro.cxx
Паша Калугин
Я бы понял, если бы ответ на тест не был захардкожен, а генерировался бы заранее валидной прогой
Но такое не всегда возможно к сожалению
источник

ПК

Паша Калугин in pro.cxx
источник

MD

Mikhail Demchenko in pro.cxx
Подскажите, какой именно набор правил не позволяет компилятору не проводить копирование в данной ситуации? https://godbolt.org/z/xWm2T-
источник

AT

Andrew Titov in pro.cxx
Mikhail Demchenko
Подскажите, какой именно набор правил не позволяет компилятору не проводить копирование в данной ситуации? https://godbolt.org/z/xWm2T-
Константность типа возвращаемого значения foo().
источник

MD

Mikhail Demchenko in pro.cxx
Andrew Titov
Константность типа возвращаемого значения foo().
Если изменить в optional на const, ничего не меняется. Так вот, это же rvalue ссылка, разве это не означает, что происходит перемещение ресурса, и не важно, что станет приёмником константный или не объект.
источник

AT

Andrew Titov in pro.cxx
Rvalue-ссылка должна быть неконстантной, иначе какое это будет перемещение?
источник

AT

Andrew Titov in pro.cxx
Mikhail Demchenko
Если изменить в optional на const, ничего не меняется. Так вот, это же rvalue ссылка, разве это не означает, что происходит перемещение ресурса, и не важно, что станет приёмником константный или не объект.
Проблема не в optional, а в foo. И не в "приёмнике", а в "источнике".
источник

PK

Pavel Kazakov in pro.cxx
Mikhail Demchenko
Подскажите, какой именно набор правил не позволяет компилятору не проводить копирование в данной ситуации? https://godbolt.org/z/xWm2T-
const user_non_copyable&& foo(); -- "дам подержать горячую картошку, но не роняйте её"?
источник

MD

Mikhail Demchenko in pro.cxx
Так вот, есть ли смысл в таком типе возвращаемого значения? Кейсы?
источник

PK

Pavel Kazakov in pro.cxx
максимум для логирования, но вообще я ни разу ничего похожего не видел в нормальном коде
источник

PK

Pavel Kazakov in pro.cxx
тут скорее от школы мысли решения зависят, но я бы по значению старался передавать, а не привязывать всё на ниточках &&
источник

MD

Mikhail Demchenko in pro.cxx
Тоже, но я тестирую штуку, которая должна работать с любым видом возвращаемого значения, и только этот вызыват проблемы
источник

PK

Pavel Kazakov in pro.cxx
про передачу по значению: "если любишь -- отпусти" :D чтобы не было std::string_view const& в параметрах
источник

PK

Pavel Kazakov in pro.cxx
Mikhail Demchenko
Тоже, но я тестирую штуку, которая должна работать с любым видом возвращаемого значения, и только этот вызыват проблемы
а если perfect forwarding использовать? будут наркоманы с Widget const&& -- это уже их дело
источник

MD

Mikhail Demchenko in pro.cxx
Pavel Kazakov
про передачу по значению: "если любишь -- отпусти" :D чтобы не было std::string_view const& в параметрах
Нет, тут вопрос, как хранить это в а-ля std::future
источник

MD

Mikhail Demchenko in pro.cxx
как хранить результат такого вызова?
источник

MD

Mikhail Demchenko in pro.cxx
Я предположил, что по значению
источник

PK

Pavel Kazakov in pro.cxx
уф, какой-то неожиданно-сложный вопрос) теряюсь сейчас
источник

PK

Pavel Kazakov in pro.cxx
я бы по значению выбрал -- остальное слишком геморно выглядит
источник

MD

Mikhail Demchenko in pro.cxx
Но компилятор ругается (нужно объявить user_non_copyable& operator=(const user_non_copyable&&))
источник