Size: a a a

2020 April 13

PK

Pavel Kazakov in pro.cxx
тут же еще copy elision всякие вылезают: не-mandatory copy elision (до 17 плюсов), хочет видеть такой оператор=, но использовать его не будет
источник

PK

Pavel Kazakov in pro.cxx
стоп, что за user_non_copyable& operator=(const user_non_copyable&&)? :) он же никому нафиг не нужен
источник

MD

Mikhail Demchenko in pro.cxx
Но если его определить, всё работает:)
источник

AT

Andrew Titov in pro.cxx
Можно пример кода, в котором он нужен?
источник

PK

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

MD

Mikhail Demchenko in pro.cxx
optional не работает, хотя значения получаются
https://godbolt.org/z/CTgWzM
источник

PK

Pavel Kazakov in pro.cxx
o = std::move(a); вот это странно выглядит
источник

MD

Mikhail Demchenko in pro.cxx
Andrew Titov
Можно пример кода, в котором он нужен?
Нужно хранить в подобии std::future результат вызова const user_non_copyable&& foo()
источник

MD

Mikhail Demchenko in pro.cxx
Pavel Kazakov
o = std::move(a); вот это странно выглядит
можно заменить на вызов foo
источник

m

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

AT

Andrew Titov in pro.cxx
Mikhail Demchenko
Нужно хранить в подобии std::future результат вызова const user_non_copyable&& foo()
А тут-то зачем const?
источник

MD

Mikhail Demchenko in pro.cxx
Andrew Titov
А тут-то зачем const?
задача - написать generic код, это один из тестовых кейсов
источник

PK

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

MD

Mikhail Demchenko in pro.cxx
Так как это валидное значение, возвращаемое из функции
источник

AT

Andrew Titov in pro.cxx
Плохая функция. :)
источник

PK

Pavel Kazakov in pro.cxx
просто использовать perfect forwarding в своем generic коде, и он 99,99% случаев покроет, остатки -- наркоманы с Widget const&&
источник

MD

Mikhail Demchenko in pro.cxx
Andrew Titov
Плохая функция. :)
Ничего не поделаешь, кто-то может так написать, вопрос - что делать?
источник

MD

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

AT

Andrew Titov in pro.cxx
Так же, как и для const T&.
источник

MD

Mikhail Demchenko in pro.cxx
Andrew Titov
Так же, как и для const T&.
Для этого сейчас служит а-ля std::reference_wrapper
источник