Bug 1610070 - Part 1: Allow comparison of UniquePtr<T> and T*. r=froydnj

This allows us to compare a `UniquePtr` with it's raw pointer type. This allows `nsTArray`'s default comparator to function properly and lets us find/remove items from an nsTArray<UniquePtr<T>> with just a raw pointer.

Differential Revision: https://phabricator.services.mozilla.com/D60339

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Eric Rahm 2020-01-20 20:06:30 +00:00
Родитель 9ad088b041
Коммит 1f1fb3adf6
1 изменённых файлов: 20 добавлений и 0 удалений

Просмотреть файл

@ -513,6 +513,26 @@ bool operator!=(const UniquePtr<T, D>& aX, const UniquePtr<U, E>& aY) {
return aX.get() != aY.get();
}
template <typename T, class D>
bool operator==(const UniquePtr<T, D>& aX, const T* aY) {
return aX.get() == aY;
}
template <typename T, class D>
bool operator==(const T* aY, const UniquePtr<T, D>& aX) {
return aY == aX.get();
}
template <typename T, class D>
bool operator!=(const UniquePtr<T, D>& aX, const T* aY) {
return aX.get() != aY;
}
template <typename T, class D>
bool operator!=(const T* aY, const UniquePtr<T, D>& aX) {
return aY != aX.get();
}
template <typename T, class D>
bool operator==(const UniquePtr<T, D>& aX, decltype(nullptr)) {
return !aX;