在 Guidelines Support Library 中有一个类叫做final_action
(基本上是众所周知的 ScopeGuard)。有 2 个独立的便利函数可以生成这个模板类:
// finally() - convenience function to generate a final_action
template <class F>
inline final_action<F> finally(const F& f) noexcept
{
return final_action<F>(f);
}
template <class F>
inline final_action<F> finally(F&& f) noexcept
{
return final_action<F>(std::forward<F>(f));
}
(来源:https ://github.com/Microsoft/GSL/blob/64a7dae4c6fb218a23b3d48db0eec56a3c4d5234/include/gsl/gsl_util#L71-L82 )
第一个需要什么?如果我们只有第二个(使用转发,也就是通用引用),它不会做同样的事情吗?