본문 바로가기

프로그램/새롭게 발견한 c++ 패턴

이동가능한 guard

struct QuitGuard  {
    struct guard_t {
        ~guard_t() {
            Quit();
        }
    };
    std::unique_ptr<guard_t> guard;
    QuitGuard(const QuitGuard&) = delete;
    QuitGuard& operator=(const QuitGuard& par) = delete;

    QuitGuard() {
        guard = std::make_unique<guard_t>();
    }
    QuitGuard(SDLQuitGuard&& par) 
        :guard(std::move(par.guard)) {}
    QuitGuard& operator=(SDLQuitGuard&& par) noexcept {
        guard = std::move(par.guard);
    }
    ~QuitGuard() { }
};

'프로그램 > 새롭게 발견한 c++ 패턴' 카테고리의 다른 글

중첩 aggregate 시 버그  (3) 2025.07.30
이런 방법이?  (3) 2025.07.25
버그1  (0) 2025.07.22
std::pair에 operator[]()을 추가해보자  (0) 2025.07.20
2  (1) 2025.07.09