openblocks/core/src/ptr_helpers.h

14 lines
No EOL
576 B
C++

#pragma once
#include <optional>
#include <memory>
template <typename T>
bool operator ==(std::optional<std::weak_ptr<T>> a, std::optional<std::weak_ptr<T>> b) {
return ((!a.has_value() || a.value().expired()) && (!b.has_value() || b.value().expired()))
|| ((a.has_value() && !a.value().expired()) && (b.has_value() && !b.value().expired()) && a.value().lock() == b.value().lock());
}
template <typename T>
bool operator ==(std::weak_ptr<T> a, std::weak_ptr<T> b) {
return (a.expired() && b.expired()) || (!a.expired() && !b.expired() && a.lock() == b.lock());
}