// This file is part of Desktop App Toolkit, // a set of libraries for developing nice desktop applications. // // For license and copyright information please follow this link: // https://github.com/desktop-app/legal/blob/master/LEGAL // #pragma once #include #include namespace crl { template struct guard_traits; template struct guard_traits, void> { static std::weak_ptr create(const std::weak_ptr &value) { return value; } static std::weak_ptr create(std::weak_ptr &&value) { return std::move(value); } static bool check(const std::weak_ptr &guard) { return guard.lock() != nullptr; } }; template struct guard_traits, void> { static std::weak_ptr create(const std::shared_ptr &value) { return value; } static std::weak_ptr create(std::shared_ptr &&value) { return value; } static bool check(const std::weak_ptr &guard) { return guard.lock() != nullptr; } }; } // namespace crl