standard novedades lenguaje entre diferencias c++ memory-management stl allocator c++17

novedades - ¿Por qué std:: allocator perdió tipos/funciones de miembro en C++ 17?



diferencias entre c++ y c++ 11 (1)

Mientras std::allocator , veo que los miembros:
value_type , pointer , const_pointer , reference , const_reference , size_type , size_type y rebind están obsoletos.

Los asignadores también ya no tendrán los miembros:
address , max_size , construct o destroy .

¿Por qué pasó esto? ¿Tuvo algo que ver con los asignadores polimóficos?


Si miras el papel de isocpp relevante , puedes ver que el primer conjunto que mencionas ahora se cree que está mejor ubicado en allocator_traits . Desde que salió la STL (ni siquiera la biblioteca estándar), ha habido más cambios en el uso de rasgos.

rebind es también una reliquia. Cuando salió el STL por primera vez, los alias y los parámetros de plantilla de plantilla no eran compatibles. Con estas características del lenguaje en existencia, la rebind parece bastante complicada. Por ejemplo, como puede ver en una respuesta a esta pregunta , en The C ++ Programming Language, 4ª edición, sección 34.4.1, pág. 998, comentando el miembro de revinculación ''clásico'' en la clase asignadora predeterminada:

template<typename U> struct rebind { using other = allocator<U>;};

Bjarne Stroustupr escribe esto: "La curiosa plantilla de reenlazado es un alias arcaico. Debería haber sido:

template<typename U> using other = allocator<U>;

Sin embargo, el asignador se definió antes de que C ++ admitiera tales alias ".

Así que, en conjunto, es la biblioteca estándar que se pone al día con los cambios de lenguaje y paradigma.