Запрос о повторном связывании распределителя - PullRequest
0 голосов
/ 10 мая 2018

Под C ++ понятиями: Allocator

хотел бы получить некоторую ясность в отношении следующего:

A :: повторное связывание шаблона :: другое (необязательно 1 )

Примечания: 1 повторное связывание является необязательным (предоставляется std::allocator_traits) если этот распределитель является шаблоном вида SomeAllocator<T, Args>, где Args - ноль или более дополнительных параметров шаблона.

Почему rebind может быть необязательным в приведенном выше случае?

1 Ответ

0 голосов
/ 10 мая 2018

Стандартная библиотека всегда обращается к распределителям через шаблон std::allocator_traits. Этот шаблон обеспечивает определение по умолчанию rebind, если оно соответствует форме Alloc<U, Args>

rebind_alloc<T> Alloc::rebind<T>::other, если присутствует, в противном случае Alloc<T, Args>, если это Alloc равно Alloc<U, Args> - cppreference.com: std :: allocator_traits

...