Отличия от ETL
В ETL пулл написан для 03 плюсов из-за чего многие фишки писались руками,
но зато можно юзать в легаси, этот пулл юзает C++17.
Например мы юзаем aligned_storage и можем выбрать любой Align, тогда как в ETL
опять велосипедим. Правда если алигн больше стандартного(нужен new align),
может потребоваться доп флаг для компилятора (TODO: добавить в API)
ETL пул занимает ~1000 строк в сумме. наш ~1500, НО у нас
не один пул, а 7.
У нас хидер онли (ну такое, но всеже) для ETL пула, придется тощить почти процентов 40 всего ETL.
Мне не нравиться в ETL вот этот момент:
https://github.com/ETLCPP/etl/blob/master/include/etl/ipool.h#L344это техника размазывания инициализации при каждом создании обьекта.
У нас инициализация в конструкторе.
В ETL используется односвязный список это наш аналог: SPool_list
В нашем пуле есть как статические пулы, так и динамические (которые используют кучу)
Есть поддержка итераторов для некоторых алгоритмов (можем заюзать for-range - мелочь, а приятно)
Есть возможность в динамическом пуле фиксировать capacity, что позволяет писать код без лишних if-ов
ограничив верхний предел, но при этом увеличивать размер через reserve
Есть возможность включить/выключить исключения std:bad_alloc для методов create/reserve
частая фигня если в эмбедете юзаем (-fno-exceptions)
И мы даем базовую гарантию при исключениях в конструкторе обьекта, в ETL такой гарантии нет.