#include <iostream>
#include <functional>

	class DoAction
		{
	public:
		DoAction (std::function<void ()> func) : m_func (func)
			{
			}
		~DoAction ()
			{
			m_func ();
			}
			
	private:
		std::function<void ()> m_func;
		};

	int main()
		{
		int a = 5;
			{
			std::cout << a << '\n';
			DoAction action([&] {a++;});
			std::cout << a << '\n';
			}
		std::cout << a << '\n';
		return 0;
		}