void operator()() const { m_fn(); }
~FgScopeGuard() { m_fn(); }
void call( argument_types &&...args ) { std::vector< argument > a = { std::forward< argument_types >( args )... }; m_fn( a ); }
DoAtScopeExit::~DoAtScopeExit() { m_fn(); }
R Run(Args&&... args) { return m_fn(std::forward<Args>(args)...); }