Порядок владельцев owner_before в C++
Два shared_ptr по блокам управления,
а не по адресам объектов, сравнивает
owner_before.
Результат стабилен для разных копий одного
владельца и годится как ключ в ассоциативных
контейнерах вместе с std::owner_less.
Запишем два независимых shared_ptr
и выведем результат сравнения:
#include <iostream>
#include <memory>
std::shared_ptr<int> left = std::make_shared<int>(1);
std::shared_ptr<int> right = std::make_shared<int>(2);
bool order = left.owner_before(right);
std::cout << order << "\n";
Создайте три shared_ptr<int>
через make_shared с разными
значениями. Выведите 1, если
первый owner_before второго,
иначе 0.
Скопируйте shared_ptr<int>
в две переменные. Проверьте, что
owner_before между копией
и оригиналом дает 0, и выведите
этот результат.