class CScopeGuard
{
private:
bool m_Dismissed;
std::function<void()> m_pfOnExitScope;
private:
void * operator new(size_t) = delete;
CScopeGuard(CScopeGuard & sg) = delete;
CScopeGuard & operator=(CScopeGuard & sg) = delete;
CScopeGuard & operator=(std::function<void()> const & soe) = delete;
public:
/*explicit*/
inline APIENTRY CScopeGuard(std::function<void()> pfOnExitScope) noexcept : m_Dismissed(false), m_pfOnExitScope(pfOnExitScope)
{
}
inline APIENTRY ~CScopeGuard()
{
if (!m_Dismissed)
{
m_pfOnExitScope();
}
}
public:
inline void APIENTRY Dismiss(bool dismissed = true) noexcept
{
m_Dismissed = dismissed;
}
};
C++ CScopeGuard
最新推荐文章于 2016-12-23 18:23:41 发布