Никогда не обязательно добавлять атрибут [[nodiscard]]
. From cppreference :
Если функция, объявленная nodiscard, или функция, возвращающая перечисление или класс, объявленный nodiscard по значению, вызывается из выражения отброшенного значения, отличного от приведения к void, компилятору рекомендуется выдавать предупреждение.
Обратите внимание на последнюю часть: «... компилятору рекомендуется выдавать предупреждение». Что касается стандарта, нет никакой гарантии, что действительно будет предупреждение. Проблема в качестве реализации. Если ваш компилятор выдает предупреждение (прочтите документацию) и если вы обрабатываете такие предупреждения как ошибки, то [[nodiscard]]
может оказаться очень полезным.
Это pedanti c использовать атрибут в операторы, в которых отказ от возврата является потенциально ошибкой. Я бы использовал его только при вызове оператора, и отказ от результата всегда является ошибкой logi c. Многие операторы используют возвращаемое значение только для включения цепочки, и [[nodiscard]]
скорее будет раздражать таких операторов. Бывают случаи, когда решение не так очевидно, и то, что вы выберете, зависит от мнения и стиля.