私がプログラミングで一番好きなのは、新しいコードを書くのではなく、既存のコードを動作を保ったまま改善することです。これはリファクタリングと言います。 新しい機能を実装する時に、まずは安直にでも良いので実装してみて、期待通りの動作になるようにしてからリファクタリングする、ような場合もあったりしますよね。 なので、今回は以前紹介した以下のfinallyのコードをリファクタリングしてみました。 template <class F> class final_action { public: explicit final_action(const F& ff) noexcept : f{ff} {} explicit final_action(F&& ff) noexcept : f{std::move(ff)} {} ~final_action() noexcept { if (invoke) f

