Реализация упрощенной версии умных указателей: Shared_ptr и Unique_ptr.
Для UniquePtr:
- реализована базовая функциональность UniquePtr
- Deleter (функтор, который вызывается для объекта в деструкторе указателя)
- специализирован шаблон для массивов --UniquePtr<T[]>.
Для SharedPtr:
- реализована базовая функциональность SharedPtr
- реализован оптимизированный MakeShared (одна аллокация на контрольный блок и элемент).