TGViewer
C++ geek C++ geek @cpp_geek · 3.53K subscribers
Post #454 828
Зачем [[nodiscard]] нужен не только для возврата значения

Если ты думаешь, что [[nodiscard]] — это просто защита от игнора Result, то вот фокус: его можно вешать и на классы, и на функции, и даже на enum — и это реально помогает избежать багов.

Пример:


struct [[nodiscard]] Error {
std::string message;
};

Error do_something() {
return {"Что-то пошло не так"};
}

void foo() {
do_something(); // warning: ignoring return value of nodiscard type
}


А теперь магия с методами:


struct Connection {
[[nodiscard]] bool is_valid() const {
return valid_;
}

private:
bool valid_ = false;
};

void check_connection(const Connection& conn) {
conn.is_valid(); // warning: result of 'is_valid' is unused
}


📌 Даже если функция возвращает bool — компилятор предупредит, если ты его проигнорируешь. Это круто, когда метод что-то проверяет, ищет или сигналит об ошибке — и ты точно не хочешь забыть проверить результат.

⚠️ Но аккуратно: [[nodiscard]] не бросает исключения и не делает функцию безопасной. Это подсказка компилятору и твой напарник по коду.

Если хочешь писать более надёжный и самодокументируемый код — юзай [[nodiscard]] не только по дефолту, а осознанно.

➡️ @cpp_geek
  • 🔥 3
  • ❤ 1
  • 👍 1
More from @cpp_geek
  1. Sep 24, 2026🎥 Вебинар по C++: Паттерн многопоточного программирования «Producer-Consumer» Когда неско…
  2. Sep 24, 2026Execution policy для параллельных алгоритмов Execution policy в C++ — это новшество, введе…
  3. Sep 17, 2026В чем разница между git fetch и git pull? Разница между этими командами заключается в том,…
  4. Sep 15, 2026std::tie std::tie — это функция, которая создает кортеж ссылок на lvalue из своих аргумент…
  5. Sep 11, 2026move constructor Move-конструктор — это специальный конструктор, который позволяет эффекти…
  6. Sep 9, 2026Move-only объекты и почему std::unique_ptr нельзя копировать Многие удивляются, когда комп…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →