Для себя Нужна помощь с написанием лабораторной работы по c++ Реализуйте два шаблона класса для умных указателей на T: unique_ptr<T, Deleter> и shared_ptr<T>, являющиеся упрощениями соответствующих шаблонов из std::. В некоторых тонких местах поведения вашей упрощённой версии и стандартного умного указателя могут отличаться, уточняйте по условию и у преподавателей. unique_ptr должен быть move-only и уметь использовать произвольный функтор типа Deleter для удаления объекта. Вы также должны самостоятельно реализовать функтор по умолчанию, похожий на std::default_delete, который будет вызывать обычный оператор delete. В shared_ptr поддержка произвольных функторов для удаления не требуется. Не требуются преобразования и сравнения между указателями на разные типы, между unique_ptr/shared_ptr, а также поддержка unique_ptr<T[]> или shared_ptr<T[]>. Однако требуется поддерживать произвольные incomplete types во всех операциях, которые не приводят к вызову delete и не требуют complete type другим способом. Точный набор поддерживаемых операций можно проверить через открытые тесты и проверить ниже в задании.