#pragma once #include #include namespace llarp { /// type for comparing smart pointer's managed values template > struct ComparePtr { bool operator()(const Ptr_t& left, const Ptr_t& right) const { if (left && right) return Compare()(*left, *right); return Compare()(left, right); } }; /// type for comparing weak_ptr by value template > struct CompareWeakPtr { bool operator()(const std::weak_ptr& left, const std::weak_ptr& right) const { return ComparePtr, Compare>{}(left.lock(), right.lock()); } }; } // namespace llarp