Я использую внешнюю библиотеку, и у них есть определенное соглашение о классах, которое для меня не имеет смысла. Они объявят их так:
Код: Выделить всё
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