Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- template<class FuncT>
- struct final_action {
- explicit final_action(FuncT func) :
- final_function{std::move(func)} {
- }
- final_action(final_action &&other) = delete;
- final_action(const final_action &) = delete;
- final_action &operator=(final_action &&other) = delete;
- final_action &operator=(const final_action &) = delete;
- ~final_action() {
- final_function();
- }
- private:
- FuncT final_function;
- };
- template<class FuncT>
- final_action<FuncT> finally(FuncT &&final_function) {
- return final_action<FuncT>{std::forward<FuncT>(final_function)};
- }
- int foo() {
- audo defer = finally([]() { // some code at the end of function});
- // function code
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement