Расширения стандартных библиотек 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> | |
| абстрактный интерфейс для классов, которые инкапсулируют ресурсы памяти (класс) | |
| поточно-ориентированный std::experimental::pmr::memory_resource для управления выделениями в пулах с разными размерами блоков (класс) | |
| небезопасный для потоков std::experimental::pmr::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 шаблоны переменных для следующих свойств типов и других шаблонов классов в стандартной библиотеке:
| Список свойств типов и других шаблонов классов, для которых предусмотрены шаблоны переменных |
|---|
|