emlabcpp
modern opinionated embedded C++ library
defer.h
Go to the documentation of this file.
1 
24 #pragma once
25 
26 #include <utility>
27 
28 namespace emlabcpp
29 {
30 
44 template < typename Callable >
45 class defer
46 {
47 public:
48  defer( Callable f )
49  : fun_( std::move( f ) )
50  {
51  }
52 
53  defer( defer const& ) = default;
54  defer( defer&& ) noexcept = default;
55  defer& operator=( defer const& ) = default;
56  defer& operator=( defer&& ) noexcept = default;
57 
58  ~defer()
59  {
60  fun_();
61  }
62 
63 private:
64  Callable fun_;
65 };
66 
67 } // namespace emlabcpp
The defer class stores a callable object and ensures it is executed when the defer object goes out of...
Definition: defer.h:46
defer(defer &&) noexcept=default
defer(Callable f)
Definition: defer.h:48
defer(defer const &)=default
MIT License.
Definition: impl.h:31
UnaryCallable && f
Definition: algorithm.h:161