Код: Выделить всё
template
class Manager
{
public:
using AllocatorType = Allocator;
using AllocatorTraits = std::allocator_traits;
friend AllocatorTraits;
static void destroy(AllocatorType& alloc, Manager* target) noexcept {
AllocatorTraits::destroy(alloc, target);
AllocatorTraits::deallocate(alloc, target, 1);
}
private:
~Manager() = default;
};
В более общем плане я хочу ограничить прямой доступ для всех, кроме Allocator, который должен иметь полный доступ, включая возможность предоставить доступ к нему кому-то другому (у кого его вообще может не быть). Существует ли для этого установленный шаблон?
РЕДАКТИРОВАТЬ:
Уничтожение выполняется с помощью статической функции, а не с помощью деструктора, поскольку объект не может освободить используемую память. для себя в своем деструкторе.
Подробнее здесь: https://stackoverflow.com/questions/790 ... ull-access