From 11256c2645d0564ee482a08c9d8238f69178b7db Mon Sep 17 00:00:00 2001 From: Danny Robson Date: Wed, 11 Nov 2015 17:01:00 +1100 Subject: [PATCH] raii: scoped_function takes a nullary void functor --- raii.hpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/raii.hpp b/raii.hpp index b513b721..2377eb58 100644 --- a/raii.hpp +++ b/raii.hpp @@ -19,6 +19,8 @@ #include "preprocessor.hpp" +#include + /// Defines a translation-unit-unique variable useful for unnamed scoped variables #define raii PASTE(__unique_, __COUNTER__) @@ -38,16 +40,20 @@ namespace util { /// Executes a function upon object destruction - template struct scoped_function { - explicit scoped_function (T &&_func): + explicit scoped_function (std::function &&_func): func (std::move (_func)) { ; } ~scoped_function () { func (); } - T func; + void clear (void) + { + func = [] (void) { ; }; + } + + std::function func; }; }