Код: Выделить всё
class Test {
public:
[[nodiscard]] int f(int a, int b) const {
return a + b;
}
}
Добавляет атрибуты [[nodiscard]] (представленные в C++17) к функциям-членам. чтобы во время компиляции указать, какие возвращаемые значения не следует игнорировать.
и я также проверил cppreference.com:
Если функция, объявленная nodiscard, или функция, возвращающая перечисление или класс, объявленный nodiscard по значению, вызывается из выражения отброшенного значения, отличного от приведения к void, компилятору рекомендуется выдать предупреждение .
...
Появляется в объявлении функции, объявлении перечисления или объявлении класса.
Если из выражения отброшенного значения, отличного от приведения к void ,
- вызывается функция, объявленная nodiscard, или
- функция, возвращающая перечисление или класс, объявленный nodiscard по значению. или
- конструктор, объявленный nodiscard, вызывается путем явного преобразования типа или static_cast, или
- объект перечисления или типа класса, объявленный nodiscard, инициализируется путем явного преобразования типов или static_cast,
Я, честно говоря, не очень понимаю, зачем эта аннотация нужна именно в этом месте. Почему компилятор игнорирует мои возвращаемые значения, если вызывающая сторона обрабатывает их дальше? Существует ли интуитивное объяснение того, что именно он сообщает компилятору и зачем это нужно?
Подробнее здесь: https://stackoverflow.com/questions/764 ... ard-in-c17