[[nodiscard]] для std::unique_ptr::release , новый метод std::unique_ptr::forget_ownership
предлагается поставить параметр [[nodiscard]] для release чтобы было сложнее не заметить потерю владения
для того чтобы использовать release для специаольной отмены владиния предлагается добавить метод void std::unique_ptr::forget_ownership() { auto tmp = this->release(); (void)(tmp);}
Можно сделать это же ещё и для других типов указателей.
Ещё надо добавить для guardов.
Надо будет писать proposal. Готовы? Есть желающие?
yndx-antoshkka, для guard'ов нельзя, есть желающие программировать в таком стиле:
Andrey, я имел в виду только метод release() для всех guard
yndx-antoshkka, понял, то есть, получается речь идет только об unique_lock::release(), больше, в стандартной библиотеке пока нет guard'ов с методом release()?
Идея была рассмотрена тут: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0600r1.pdf но отвергнута.
Andrey, идея была принята в том виде что изложено в бумаге. Но ни в бумаге, ни при обсуждении речь не заходила о методах release().
Так что надо писать новую бумагу, на добавлние [[nodiscard]] к release() методам умных указателей и guardов
yndx-antoshkka, в бумаге сказано про unique_ptr::release(), что к нему добавлять [[nodiscard]] не предлагается, потому что в Google в 3.5% результат unique_ptr::release() дискардится но это все не баги.
Andrey, и правда, этот момент я проглядел. Спасибо!
Тогда бессмысленно в ближайшее время опять поднимать этот вопрос.
yndx-antoshkka, сложно будет пробить, если есть примеры на кодовой базе. Вот если бы были доказательства обратного... то тогда было бы легче. Можно было бы сделать по аналогии с исследованием о привнесении багов при изменении if(a < b < c)