Что означает boost :: container :: allocator_traits :: is_partially_propagable? - PullRequest
0 голосов
/ 12 мая 2018

Я пытался понять boost :: container :: allocator_traits , когда столкнулся с boost :: container :: allocator_traits :: is_partially_propagable.

Я не могу найти другой документ оон-лайн, и я могу понять все остальные члены boost :: container :: allocator_traits, кроме is_partially_propagable и storage_is_unpropagable.

Edit:

И как они реализованы и как их использоватьпри написании контейнера?

1 Ответ

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

Это (is_partially_propagable) означает, что распределитель использует внутреннее хранилище (у него есть состояние), и не вся выделенная им память может быть освобождена другим распределителем, даже если оба сравниваются. (Предполагается, что распределители одного и того же типа всегда будут сравниваться и быть взаимозаменяемыми)

Что делает storage_is_unpropagable, так это берет указатель на выделенную память и возвращает true, если это не подлежащая распространению память. (Поскольку не вся память должна быть недоступна)

Этот распределитель (small_vector_allocator) используется в качестве оптимизации пространства в small_vector.

https://www.boost.org/doc/libs/1_65_0/boost/container/small_vector.hpp

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