rename final_act to final_action (#579)

This commit is contained in:
Tiago 2017-11-28 07:20:32 -08:00 committed by Neil MacIntosh
parent 436dbad8c6
commit 6e2e207c8d

View File

@ -43,22 +43,22 @@ namespace gsl
// GSL.util: utilities // GSL.util: utilities
// //
// final_act allows you to ensure something gets run at the end of a scope // final_action allows you to ensure something gets run at the end of a scope
template <class F> template <class F>
class final_act class final_action
{ {
public: public:
explicit final_act(F f) noexcept : f_(std::move(f)), invoke_(true) {} explicit final_action(F f) noexcept : f_(std::move(f)), invoke_(true) {}
final_act(final_act&& other) noexcept : f_(std::move(other.f_)), invoke_(other.invoke_) final_action(final_action&& other) noexcept : f_(std::move(other.f_)), invoke_(other.invoke_)
{ {
other.invoke_ = false; other.invoke_ = false;
} }
final_act(const final_act&) = delete; final_action(const final_action&) = delete;
final_act& operator=(const final_act&) = delete; final_action& operator=(const final_action&) = delete;
~final_act() noexcept ~final_action() noexcept
{ {
if (invoke_) f_(); if (invoke_) f_();
} }
@ -68,17 +68,17 @@ private:
bool invoke_; bool invoke_;
}; };
// finally() - convenience function to generate a final_act // finally() - convenience function to generate a final_action
template <class F> template <class F>
inline final_act<F> finally(const F& f) noexcept inline final_action<F> finally(const F& f) noexcept
{ {
return final_act<F>(f); return final_action<F>(f);
} }
template <class F> template <class F>
inline final_act<F> finally(F&& f) noexcept inline final_action<F> finally(F&& f) noexcept
{ {
return final_act<F>(std::forward<F>(f)); return final_action<F>(std::forward<F>(f));
} }
// narrow_cast(): a searchable way to do narrowing casts of values // narrow_cast(): a searchable way to do narrowing casts of values