В связи с тем, что в C++ завезли атрибут [[nodiscard]], да и в чистом C благодаря расширениям компиляторов ряд функций помечается соответствующим образом, становится актуальным явное обозначение в коде тех мест, где возвращаемое значение функции намеренно игнорируется.
Только вот использовать для этого запись вида:
(void)::pipe(pipefd_); (void)::fcntl(write_pipefd(), F_SETFL, O_DIRECT | O_NONBLOCK); (void)::fcntl(read_pipefd(), F_SETFL, O_DIRECT | O_NONBLOCK); |
мне лично не нравится. Нравится так, как это было принято в других языках:
_ = ::pipe(pipefd_); _ = ::fcntl(write_pipefd(), F_SETFL, O_DIRECT | O_NONBLOCK); _ = ::fcntl(read_pipefd(), F_SETFL, O_DIRECT | O_NONBLOCK); |
Что достигается очень простой вспомогательной конструкцией:
// Вспомогательная штука, чтобы подавить предупреждения об игнорировании // возвращаемого значения. namespace { struct just_ignore_t { template<typename T> void operator=(T) {} } _; } |
Правда, боюсь, если это и найдет свое применение в C++, то очень ограниченное. Но смотрится прикольно :)
Комментариев нет:
Отправить комментарий