Format OnLeavingScope

This commit is contained in:
Maschell 2022-05-08 14:42:44 +02:00
parent 846725f881
commit 99791f5edf

View File

@ -46,8 +46,8 @@
#ifndef CRASCIT_ONLEAVINGSCOPE_H #ifndef CRASCIT_ONLEAVINGSCOPE_H
#define CRASCIT_ONLEAVINGSCOPE_H #define CRASCIT_ONLEAVINGSCOPE_H
#include <utility>
#include <type_traits> #include <type_traits>
#include <utility>
/** /**
@ -61,40 +61,32 @@
* function instead. * function instead.
*/ */
template<typename Func> template<typename Func>
class OnLeavingScope class OnLeavingScope {
{
public: public:
// Prevent copying // Prevent copying
OnLeavingScope(const OnLeavingScope&) = delete; OnLeavingScope(const OnLeavingScope &) = delete;
OnLeavingScope& operator=(const OnLeavingScope&) = delete; OnLeavingScope &operator=(const OnLeavingScope &) = delete;
// Allow moving // Allow moving
OnLeavingScope(OnLeavingScope&& other) : OnLeavingScope(OnLeavingScope &&other) : m_func(std::move(other.m_func)),
m_func(std::move(other.m_func)), m_owner(other.m_owner) {
m_owner(other.m_owner) other.m_owner = false;
{ }
other.m_owner = false;
}
OnLeavingScope(const Func& f) : OnLeavingScope(const Func &f) : m_func(f),
m_func(f), m_owner(true) {
m_owner(true) }
{ OnLeavingScope(Func &&f) : m_func(std::move(f)),
} m_owner(true) {
OnLeavingScope(Func&& f) : }
m_func(std::move(f)), ~OnLeavingScope() {
m_owner(true) if (m_owner)
{ m_func();
} }
~OnLeavingScope()
{
if (m_owner)
m_func();
}
private: private:
Func m_func; Func m_func;
bool m_owner; bool m_owner;
}; };
@ -114,9 +106,8 @@ private:
* from the object passed as the function argument. * from the object passed as the function argument.
*/ */
template<typename Func> template<typename Func>
OnLeavingScope<typename std::decay<Func>::type> onLeavingScope(Func&& f) OnLeavingScope<typename std::decay<Func>::type> onLeavingScope(Func &&f) {
{ return OnLeavingScope<typename std::decay<Func>::type>(std::forward<Func>(f));
return OnLeavingScope<typename std::decay<Func>::type>(std::forward<Func>(f));
} }
#endif // CRASCIT_ONLEAVINGSCOPE_H #endif // CRASCIT_ONLEAVINGSCOPE_H