Por que as funções de construção e destruição do std :: alocador são preteridas no c ++ 17?
A especificação do c ++ 17 descontinua oconstruct
edestroy
membros destd::allocator
objeto. O grupo de trabalho forneceu justificativas para descontinuar outras funções membrosaqui, sob o título "Descontinuar os membros redundantes do std :: alocador".
No entanto, eles não mencionam especificamente por que esses dois membros foram preteridos ou qual é a recomendação para substituir essa funcionalidade. Estou assumindo que a implicação é usarstd::allocator_traits::construct
em vez de.
Estou um pouco confuso sobre se implementarconstruct
pode ainda ser necessário em alguns casos, embora devido aeste comentário sobrestd::allocator_traits::construct
Como essa função fornece o retorno automático ao posicionamento new, a função de membro construct () é um requisito opcional do Alocador desde o C ++ 11.
Para alocadores personalizados (por exemplo, memória alinhada à página usandomemalign
), voltará ao posicionamentonew
sempre produz o comportamento correto?