shared_scope_guard.hpp 662 B

123456789101112131415161718192021222324
  1. // Copyright Takatoshi Kondo 2018
  2. //
  3. // Distributed under the Boost Software License, Version 1.0.
  4. // (See accompanying file LICENSE_1_0.txt or copy at
  5. // http://www.boost.org/LICENSE_1_0.txt)
  6. #if !defined(MQTT_SHARED_SCOPE_GUARD_HPP)
  7. #define MQTT_SHARED_SCOPE_GUARD_HPP
  8. #include <memory>
  9. #include <utility>
  10. #include <mqtt/namespace.hpp>
  11. namespace MQTT_NS {
  12. template <typename Proc>
  13. inline auto shared_scope_guard(Proc&& proc) {
  14. auto deleter = [proc = std::forward<Proc>(proc)](void*) mutable { std::forward<Proc>(proc)(); };
  15. return std::shared_ptr<void>(nullptr, std::move(deleter));
  16. }
  17. } // namespace MQTT_NS
  18. #endif // MQTT_SHARED_SCOPE_GUARD_HPP