Расширения стандартных библиотек C++
Материал из cppreference.com
< cpp | experimental
Версия 1 Расширений C++ для Основ Библиотеки, ISO/IEC ТС 19568:2015 определяет следующие новые компоненты для стандартной библиотеки C++:
Содержание |
[править]Не выбрано для включения в C++17
Следующие компоненты ISO/IEC ТС 19568:2015 не были выбраны для включения в C++17.
[править]Модифицированные версии существующих классов для поддержки аллокаторов с удалением типов
Определены в заголовочном файле <experimental/functional> | |
модифицированная версия std::function с поддержкой аллокаторов с удалением типов (шаблон класса) | |
Определены в заголовочном файле <experimental/future> | |
модифицированная версия std::promise с поддержкой аллокаторов с удалением типов (шаблон класса) | |
модифицированная версия std::packaged_task с поддержкой аллокаторов с удалением типов (шаблон класса) |
[править]Адаптеры ресурсов памяти
адаптирует аллокатор с memory_resource (псевдоним шаблона) |
[править]Общие утилиты
Определены в заголовочном файле <experimental/utility> | |
тип заполнителя для удаления типа, например, в аллокаторах (класс) | |
Определены в заголовочном файле <experimental/type_traits> | |
выводит подразумеваемый тип функции вызываемого объекта при вызове с заданными типами аргументов (шаблон класса) |
[править]Макросы тестирования функций
Определены в заголовочном файле <experimental/optional> | |
__cpp_lib_experimental_optional | значение не менее 201411 указывает, что дополнительный тип поддерживается (макроконстанта) |
Определены в заголовочном файле <experimental/any> | |
__cpp_lib_experimental_any | значение не менее 201411 указывает, что поддерживается любой тип (макроконстанта) |
Определены в заголовочном файле <experimental/string_view> | |
__cpp_lib_experimental_string_view | значение не менее 201411 указывает, что поддерживается шаблон basic_string_view (макроконстанта) |
Определены в заголовочном файле <experimental/tuple> | |
__cpp_lib_experimental_apply | значение не менее 201402 указывает, что функция кортежа apply() поддерживается (макроконстанта) |
Определены в заголовочном файле <experimental/type_traits> | |
__cpp_lib_experimental_type_trait_variable_templates | значение не менее 201402 указывает, что свойства типа шаблона переменной поддерживаются (макроконстанта) |
__cpp_lib_experimental_invocation_type | значение не менее 201406 указывает, что свойства типа вызова поддерживаются (макроконстанта) |
Определены в заголовочном файле <experimental/functional> | |
__cpp_lib_experimental_boyer_moore_searching | значение не менее 201411 указывает, что поддерживаются дополнительные алгоритмы поиска (макроконстанта) |
__cpp_lib_experimental_function_erased_allocator | значение не менее 201406 указывает, что поддерживается аллокатор с удалением типа для std::function (макроконстанта) |
Определены в заголовочном файле <experimental/future> | |
__cpp_lib_experimental_promise_erased_allocator | значение не менее 201406 указывает, что поддерживается аллокатор с удалением типа для std::promise (макроконстанта) |
__cpp_lib_experimental_packaged_task_erased_allocator | значение не менее 201406 указывает, что поддерживается аллокатор с удалением типа для std::packaged_task (макроконстанта) |
Определены в заголовочном файле <experimental/memory> | |
__cpp_lib_experimental_shared_ptr_arrays | значение не менее 201406 указывает, что массивы shared_ptr поддерживаются (макроконстанта) |
Определены в заголовочном файле <experimental/memory_resource> | |
__cpp_lib_experimental_memory_resources | значение не менее 201402 указывает, что полиморфные ресурсы памяти поддерживаются (макроконстанта) |
Определены в заголовочном файле <experimental/algorithm> | |
__cpp_lib_experimental_sample | значение 201402 указывает, что алгоритм sample поддерживается (макроконстанта) |
[править]Объединено с C++17
Следующие компоненты ISO/IEC ТС 19568:2015 были включены в C++17.
[править]необязательные объекты
Определены в заголовочном файле <experimental/optional> | |
шаблон класса, представляющий необязательные объекты (шаблон класса) |
[править]класс any
Определены в заголовочном файле <experimental/any> | |
типобезопасный контейнер для отдельных значений любого типа (класс) |
[править]string_view
Определены в заголовочном файле <experimental/string_view> | |
ссылка на строку, не являющаяся владельцем (шаблон класса) |
[править]Удаление типов и полиморфные аллокаторы
[править]Полиморфные аллокаторы и ресурсы памяти
Сущности в этом разделе объявлены в пространстве имён std::experimental::pmr.
Определены в заголовочном файле <experimental/memory_resource> | |
абстрактный интерфейс для классов, которые инкапсулируют ресурсы памяти (класс) | |
поточно-ориентированный memory_resource для управления выделениями в пулах с разными размерами блоков (класс) | |
небезопасный для потоков memory_resource, который управляет выделениями в пулах с разными размерами блоков (класс) | |
специальный memory_resource, который освобождает выделенную память только при уничтожении ресурса (класс) | |
аллокатор, который поддерживает полиморфизм времени выполнения на основе memory_resource, он построен с (шаблон класса) | |
возвращает статический программный memory_resource , который использует глобальный operator new и operator delete для выделения и освобождения памяти (функция) | |
возвращает статический memory_resource , который не выполняет выделение (функция) | |
получает memory_resource по умолчанию (функция) | |
устанавливает memory_resource по умолчанию (функция) |
[править]Удобные псевдонимы для контейнеров, использующих полиморфные аллокаторы
Удобные псевдонимы и шаблоны псевдонимов для контейнеров, использующих полиморфные аллокаторы, предоставляются в пространстве имён std::experimental::pmr
для следующих шаблонов классов в стандартной библиотеке:
Список шаблонов контейнеров, для которых предусмотрены удобные псевдонимы |
---|
[править]
Определены в заголовочном файле <experimental/memory> | |
Класс | Описание |
Модифицированная версия std::shared_ptr, поддерживающая массивы (шаблон класса) | |
Модифицированная версия std::weak_ptr, поддерживающая массивы (шаблон класса) |
[править]Алгоритмы выборки и поиска
Определены в заголовочном файле <experimental/algorithm> | |
выбирает n случайных элементов из последовательности (шаблон функции) | |
применяет Searcher к последовательности (шаблон функции) | |
Определены в заголовочном файле <experimental/functional> | |
реализация алгоритма поиска стандартной библиотеки C++ (шаблон класса) | |
вспомогательная функция для создания default_searcher (шаблон функции) | |
реализация алгоритма поиска Бойера-Мура (шаблон класса) | |
вспомогательная функция для создания boyer_moore_searcher (шаблон функции) | |
реализация алгоритма поиска Бойера-Мура-Хорспула (шаблон класса) | |
вспомогательная функция для создания boyer_moore_horspool_searcher (шаблон функции) |
[править]Общие утилиты
Определены в заголовочном файле <experimental/tuple> | |
вызывает функцию для кортежа аргументов (шаблон функции) |
Кроме того, ТС предоставляет многочисленные constexpr
шаблоны переменных для следующих свойств типов и других шаблонов классов в стандартной библиотеке: