им подобных? Я имею в виду, кто-то сходу сможет сказать, в каком объявлении функции ошибка:
[[nodiscard]] const auto fun1(const int& i) noexcept const override -> std::optional<unsigned long long>;
const auto fun1(const int& i) noexcept const [[nodiscard]] -> std::optional<unsigned long long> override ;
[[maybe_unused]] const auto fun1(const int& i) const noexcept -> std::optional<unsigned long long> override;
const auto fun1(const int& i) [[maybe_unused]] const noexcept -> std::optional<unsigned long long> override;
nodiscard и maybe unused — противоречат друг другу,
Да, мне почему-то казалось, что оно про то, что функция может не использоваться. Но сути не меняет
Именно так и есть, они не противоречат друг другу
А он уже поменял определения...
Ну вот это утверждение неверно, так как nodiscard про использование возвращаемого значения, maybe_unused про то, что сама функция может не использоваться (https://en.cppreference.com/w/cpp/language/attributes/maybe_unused)
Так любая функция может всегда не использоваться....
Может. Но не всегда это отслеживается. Но, например, на неиспользуемые static функции (internal linkage) компиляторы обычно дают предупреждение. Думаю, как раз этот случай maybe_unused на функциях покрывает
Обсуждают сегодня