Проект Abseil, в рамках которого открыта коллекция полезного кода для разработчиков на языке C++, расширяющего стандартную библиотеку функций. Исходные тексты распространяются под лицензией Apache 2.0.

В состав библиотеки включены функции общего назначения, используемые в продуктах Google и хорошо протестированные на реально работающих проектах. Одна часть предложенных в Abseil функций заполняет ниши, не определённые в стандарте C++, а другая предоставляет альтернативные реализации штатных возможностей стандартов C++14 и C++17, адаптированные для использования в коде на C++11 (например, типы optional, any и string_view). Google не пытается продвигать Abseil как альтернативу стандартной библиотеке, а лишь желает поделиться с сообществом кодом, который оказался полезен в собственных проектах.

Компоненты библиотеки:

base - базовая часть, включающая код для инициализации и первичные примитивы, которые используют только стандартную библиотеку C++, но при этом выступают в качестве зависимостей для других компонентов Abseil;

algorithm - библиотека с коллекцией алгоритмов, дополняющая одноимённую стандартную библиотеку C++ и включающая варианты предложенных в ней алгоритмов, оформленных с использованием контейнеров;

container - библиотека с дополнительными контейнерами в стиле STL;
debugging - отладочная библиотека, добавляющая проверки для выявления утечек;

memory - включает совместимую с C++11 реализацию std::make_unique() и других функций, связанных с управлением памятью;

meta - включает совместимые с C++11 версии механизмов проверок типов, появившихся в библиотеке type_traits в C++14 и C++17;

numeric - предоставляет совместимые с C++11 реализации 128-разрядных целых типов;

strings - подборка функций для обработки строк, включая absl::StrCat(), absl::StrJoin() и absl::StrSplit(), а также совместимую с C++11 версию типа std::string_view, появившегося в стандарте C++17

synchronization - примитивы для организации параллельно выполняемых потоков, класс absl::Mutex (оптимизированная замена std::mutex) и набор абстракций для синхронизации потоков;

time - функции для операций с абсолютными моментами времени (absl::Time), отрезками времени (absl:uration), форматирования и разбора значений времени. Также предложен absl::Now() , оптимизированный вариант std::chrono::system_clock::now();

types - подборка типов, например, совместимый с C++11 вариант absl:ptional.
[Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ]