代码拉取完成,页面将自动刷新
////////////
#ifndef AZE_FINALY_HPP
#define AZE_FINALY_HPP
#include <memory>
namespace aze {
template <class F> class final_act {
public:
explicit final_act(F f) noexcept : f_(std::move(f)), invoke_(true) {}
final_act(final_act &&other) noexcept
: f_(std::move(other.f_)), invoke_(other.invoke_) {
other.invoke_ = false;
}
final_act(const final_act &) = delete;
final_act &operator=(const final_act &) = delete;
~final_act() noexcept {
if (invoke_)
f_();
}
private:
F f_;
bool invoke_;
};
// finally() - convenience function to generate a final_act
template <class F> inline final_act<F> finally(const F &f) noexcept {
return final_act<F>(f);
}
template <class F> inline final_act<F> finally(F &&f) noexcept {
return final_act<F>(std::forward<F>(f));
}
} // namespace aze
#endif
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。