Команда стандартных библиотек MSVC пошла дальше и добавила несколько тысяч экземпляров [[nodiscard]]
с версии VS 2017 15.6 и сообщила о безумном успехе с ней (как с точки зрения обнаружения множества ошибок, так и отсутствия жалоб пользователей). Критерии, которые они описали, были примерно:
- Чистые наблюдатели, например
vector::size()
, vector::empty
и даже std::count_if()
- Вещи, которые приобретают сырые ресурсы, например,
allocate()
- Функции, в которых исключение возвращаемого значения может привести к неправильному коду, например,
std::remove()
MSVC помечает std::move()
и std::forward()
как [[nodiscard]]
в соответствии с этими критериями.
Хотя это официально не аннотировано как таковое в стандарте, похоже, оно дает очевидную выгоду для пользователя, и это больше вопрос изготовления такой бумаги, чтобы пометить все правильные вещи [[nodiscard]]
(опять же, несколько тысяч экземпляров из MSVC) и применять их - это не сложная работа как таковая, но объем большой. В то же время, может быть, подтолкнуть вашего любимого поставщика стандартной библиотеки и попросить их [[nodiscard]]
много вещей?