commonlib
finally.h
Go to the documentation of this file.
1 
11 #pragma once
12 
13 #include <functional>
14 #include "memory.h"
15 
16 BEGIN_NAMESPACE_MEMORY
17 
21 class Finally
22 {
23 public:
24  Finally() = delete;
25  Finally(const Finally& other) = delete;
26  Finally& operator=(const Finally&) = delete;
27 
32  explicit Finally(std::function<void()> finalizer)
33  : finalizer(std::move(finalizer))
34  {
35  }
36 
37  ~Finally()
38  {
39  if (finalizer)
40  finalizer();
41  }
42 
43 private:
44  std::function<void()> finalizer;
45 };
46 
47 END_NAMESPACE_MEMORY
STL namespace.
The class Finnaly calls cleanup function on destructor.
Definition: finally.h:21
Finally(std::function< void()> finalizer)
Create finally object.
Definition: finally.h:32