Почему класс принимает std::allocator в качестве аргумента?C++

Программы на C++. Форум разработчиков
Anonymous
 Почему класс принимает std::allocator в качестве аргумента?

Сообщение Anonymous »

Я использую внешнюю библиотеку, и у них есть определенное соглашение о классах, которое для меня не имеет смысла. Они объявят их так:

Код: Выделить всё

class SomeClass
{
public:
using allocator_type = ::std::allocator;

SomeClass() noexcept :
SomeClass(allocator_type())
{}

explicit SomeClass(const allocator_type& allocator) noexcept;

...
Они используют распределитель по умолчанию в качестве аргумента для внутреннего распределения. Но распределитель по умолчанию не настраивается, я не понимаю, как вообще можно управлять памятью. Он не имеет состояния и всегда будет выделять глобально с помощью new(). Кажется, им следовало использовать интерфейс с виртуальными функциями или шаблонный класс, определяемый пользователем.
Это соглашение кажется совершенно бессмысленным, и у меня возникает ощущение, будто я чего-то не хватает. что-нибудь. Прав ли я в этом, или здесь есть какая-то цель, которую я не понимаю?

Подробнее здесь: https://stackoverflow.com/questions/790 ... n-argument

Вернуться в «C++»