Related: Pourquoi les conteneurs standard exigent-ils que allocator_type :: value_type soit le type d’élément?
Il est dit que les éléments suivants sont obsolètes depuis C ++ 17:
template struct allocator;
Je me demande s’il est obsolète, car le modèle principal à lui seul est maintenant en mesure de prendre en charge allocator
, ou le cas d’utilisation d’ allocator
est obsolète.
Si ce dernier, je me demande pourquoi. Je pense que allocator
est utile pour spécifier un allocateur non lié à un type spécifique (donc seulement quelques schémas / métadonnées).
Selon p0174r0
De même,
std::allocator
est défini de manière à ce que différentes astuces de reliure de gabarit puissent fonctionner dans la bibliothèque C ++ 98 d’origine, mais ce n’est pas un allocateur réel, car il manque les fonctions d’allocate
et dedeallocate
, qui ne peuvent pas être synthétisées par défaut deallocator_traits
. Ce besoin a disparu avec C ++ 11 et les alias de typevoid_pointer
etconst_void_pointer
dans allocator_traits. Cependant, nous continuons à le spécifier afin d’éviter de supprimer l’ancien code qui n’avait pas encore été mis à niveau pour prendre en charge les allocateurs génériques, conformément à C ++ 11.