tg-me.com/cpp_geek/315
Last Update:
C++: зачем [[nodiscard]]
на bool
— и почему это важно
Когда функция возвращает bool
, часто возникает соблазн проигнорировать результат:
is_valid(user); // ничего не делает!
А теперь представьте, что
is_valid()
проверяет критическое условие. Без проверки — баг, возможно даже security-уязвимость.Чтобы защититься от такого, с C++17 есть
[[nodiscard]]
:
[[nodiscard]] bool is_valid(const User& user);
Теперь, если результат проигнорировать — компилятор предупредит:
warning: ignoring return value of 'is_valid', declared with attribute 'nodiscard'
Можно ещё улучшить читаемость — использовать
[[nodiscard("Must check if user is valid")]]
, чтобы компилятор написал пояснение в варнинге (начиная с C++20).🔥 Лайфхак: ставьте
[[nodiscard]]
на все функции, где игнорирование результата — это почти всегда ошибка. Особенно на:* проверки (
is_...
)* операции с возможным фейлом (
try_...
, parse_...
)* RAII-объекты с флагами состояния
Не ленитесь —
[[nodiscard]]
спасает от тонких багов и делает код надёжнее.➡️ @cpp_geek
BY C++ geek
Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283
Share with your friend now:
tg-me.com/cpp_geek/315