No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

45 líneas
757B

  1. #pragma once
  2. #include <utility>
  3. namespace sg
  4. {
  5. template<class Deleter>
  6. class scope_guard_t
  7. {
  8. public:
  9. explicit scope_guard_t(Deleter&& deleter) noexcept : m_deleter(std::move(deleter))
  10. {
  11. }
  12. scope_guard_t(scope_guard_t&&)= default;
  13. scope_guard_t(const scope_guard_t&) = delete;
  14. ~scope_guard_t()
  15. {
  16. m_deleter();
  17. }
  18. scope_guard_t& operator=(const scope_guard_t&) = delete;
  19. scope_guard_t& operator=(scope_guard_t&&) = delete;
  20. private:
  21. Deleter m_deleter;
  22. };
  23. template<class Deleter>
  24. scope_guard_t<Deleter> scope_guard(Deleter&& deleter) noexcept
  25. {
  26. return scope_guard_t<Deleter>(std::move(deleter));
  27. }
  28. }