Я недавно думал об этом, и единственный аргумент, который я вижу, чтобы иметь оператор равенства для std :: unique_ptr, это для полноты, поэтому он есть у всех умных указателей в стандартной библиотеке шаблонов. Но если вы не сделали что-то не так, я не вижу ни одного примера, где это может вернуть true
.
Очевидно, что можно сделать что-то вроде:
int* a = new int(1);
std::unique_ptr<int> u_a1(a);
std::unique_ptr<int> u_a2(a);
if(u_a1 == u_a2)
{
std::cout << "I'm double deleting soon" << std::endl;
}
Но не ' t включение оператора просто позволяет людям совершать подобные ошибки, а компилятор не выдает ошибку? Не будет ли больше смысла удалить его, или я что-то упустил?