#pragma once

#include <AK/StdLibExtras.h>

namespace AK {

template<typename Callback>
class ScopeGuard {
public:
    ScopeGuard(Callback callback)
        : m_callback(move(callback))
    {
    }

    ~ScopeGuard()
    {
        m_callback();
    }

private:
    Callback m_callback;
};

}

using AK::ScopeGuard;
