Как выглядит объявление шаблона при использовании стандартного распределителя в классе шаблона? - PullRequest
0 голосов
/ 16 февраля 2019

Я видел несколько примеров использования allocator в качестве члена класса в шаблонном классе.Например:

template <class T, class Alloc = std::allocator<T>> class myVector
{
public:
    ...
protected:
    std::allocator<value_type> _alloc;
    ...
private:
    ...
};

Но код все еще работает, когда я удаляю аргумент шаблона значения по умолчанию, например template <class T> class myVector.Так нужно ли нам добавлять аргумент шаблона по умолчанию, когда у нас есть распределитель в качестве члена класса?Если ответ да, почему?

1 Ответ

0 голосов
/ 16 февраля 2019

Показанный код, вероятно, неверен: он должен использовать предоставленный тип Alloc для выделения вместо жесткого кодирования std::allocator.(А также воспользуйтесь преимуществами оптимизации пустого базового класса, чтобы избежать увеличения размера контейнера, если распределитель имеет пустой тип)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...