C++ - clang tidy жалуется на правило X?
Этот код вызывает предупреждение в clang tidy:
Класс «Locker» определяет деструктор не по умолчанию, но не определяет конструктор копирования, оператор присваивания копии, конструктор перемещения или оператор присваивания перемещенияclang-tidy(cppcoreguidelines-special-member-functions)
Это обновленная структура, согласно комментариям:
struct Locker
{
std::binary_semaphore *sem = nullptr;
// ----------------------------------
// Methods
// ----------------------------------
auto try_lock(std::binary_semaphore &sem_, u32 time_in_seconds = 1) -> bool;
auto manual_release() -> void;
// ----------------------------------
// Deleted
// ----------------------------------
Locker(Locker &) = delete;
Locker(Locker &&) = delete;
Locker(std::binary_semaphore &&sem_) noexcept = delete;
Locker(std::binary_semaphore &sem_) noexcept = delete;
Locker(std::binary_semaphore *sem_) noexcept = delete;
Locker() noexcept = default;
auto operator=(std::binary_semaphore &sem_) noexcept -> Locker & = delete;
auto operator=(std::binary_semaphore &&sem_) noexcept -> Locker & = delete;
auto operator=(std::binary_semaphore *sem_) noexcept -> Locker & = delete;
// ----------------------------------
// Destructor
// ----------------------------------
~Locker()
{
manual_release();
}
};
Мне не нужны никакие конструкторы, но мне нужен конкретный деструктор. у нас есть способ попробовать блокировку, а деструктор просто снимает блокировку, убедившись, что все в порядке.
Обратите внимание, что GCC 12.2 с
-Wall -Wextra -pedantic -pedantic-errors -Werror -Wuninitialized -Wtrivial-auto-var-init -Wshadow -Wnormalized -Wno-error=comment
даже не мешает.
Как подавить это предупреждение?
Спасибо!
Редактировать:
Ниже приведена ссылка на Godbolt, чтобы воспроизвести ситуацию, может ли кто-нибудь исправить мой код и поделиться ссылкой здесь?Ссылка на проблему со структурой clang-tidy