C++ standard libraries extensions
Версия 1 Расширений для библиотечных компонентов C++, ISO/IEC TS 19568:2015 определяет следующие новые компоненты для стандартной библиотеки C++:
Содержание |
Не выбрано для включения в C++17
Следующие компоненты ISO/IEC TS 19568:2015 не были выбраны для включения в C++17.
Модифицированные версии существующих классов для поддержки стирания типа аллокаторов
|
Определено в заголовочном файле
<experimental/functional>
|
|
|
модифицированная версия
std::function
с поддержкой type-erased allocators
(шаблон класса) |
|
|
Определено в заголовочном файле
<experimental/future>
|
|
|
модифицированная версия
std::promise
с поддержкой type-erased allocators
(шаблон класса) |
|
|
модифицированная версия
std::packaged_task
с поддержкой type-erased allocators
(шаблон класса) |
|
Адаптеры ресурсов памяти
|
адаптирует аллокатор в
memory_resource
(псевдоним шаблона) |
Общие утилиты
|
Определено в заголовочном файле
<experimental/utility>
|
|
|
тип-заполнитель для стирания типа, например в аллокаторах
(класс) |
|
|
Определено в заголовочном файле
<experimental/type_traits>
|
|
|
выводит подразумеваемый тип функции вызываемого объекта при вызове с заданными типами аргументов
(шаблон класса) |
|
Макросы проверки возможностей
|
Определено в заголовочном файле
<experimental/optional>
|
|
|
__cpp_lib_experimental_optional
|
значение не менее
201411
указывает, что тип optional поддерживается
(макроконстанта) |
|
Определено в заголовочном файле
<experimental/any>
|
|
|
__cpp_lib_experimental_any
|
значение не менее
201411
указывает, что тип any поддерживается
(макроконстанта) |
|
Определено в заголовочном файле
<experimental/string_view>
|
|
|
__cpp_lib_experimental_string_view
|
значение не менее
201411
указывает, что шаблон basic_string_view поддерживается
(макроконстанта) |
|
Определено в заголовочном файле
<experimental/tuple>
|
|
|
__cpp_lib_experimental_apply
|
значение не менее
201402
указывает, что функция apply() для tuple поддерживается
(макроконстанта) |
|
Определено в заголовочном файле
<experimental/type_traits>
|
|
|
__cpp_lib_experimental_type_trait_variable_templates
|
значение не менее
201402
указывает, что шаблонные переменные type traits поддерживаются
(макроконстанта) |
|
__cpp_lib_experimental_invocation_type
|
значение не менее
201406
указывает, что type traits для вызова поддерживаются
(макроконстанта) |
|
Определено в заголовочном файле
<experimental/functional>
|
|
|
__cpp_lib_experimental_boyer_moore_searching
|
значение не менее
201411
указывает, что дополнительные алгоритмы поиска поддерживаются
(макроконстанта) |
|
__cpp_lib_experimental_function_erased_allocator
|
значение не менее
201406
указывает, что type-erased аллокатор для std::function поддерживается
(макроконстанта) |
|
Определено в заголовочном файле
<experimental/future>
|
|
|
__cpp_lib_experimental_promise_erased_allocator
|
значение не менее
201406
указывает, что type-erased аллокатор для std::promise поддерживается
(макроконстанта) |
|
__cpp_lib_experimental_packaged_task_erased_allocator
|
значение не менее
201406
указывает, что type-erased аллокатор для 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 TS 19568:2015 были включены в C++17.
объекты optional
|
Определено в заголовочном файле
<experimental/optional>
|
|
|
шаблон класса, представляющий
опциональные объекты
(шаблон класса) |
|
класс
any
|
Определено в заголовочном файле
<experimental/any>
|
|
|
типобезопасный контейнер для одиночных значений любого типа
(класс) |
|
string_view
|
Определено в заголовочном файле
<experimental/string_view>
|
|
|
невладеющая ссылка на строку
(шаблон класса) |
|
Стирание типа и полиморфные аллокаторы
Полиморфные аллокаторы и ресурсы памяти
Сущности в этом разделе объявлены в пространстве имен std::experimental::pmr .
|
Определено в заголовочном файле
<experimental/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>
|
|
|
вызывает функцию с кортежем аргументов
(шаблон функции) |
|
Кроме того, TS предоставляет
многочисленные
constexpr
шаблоны переменных
для следующих характеристик типов и других шаблонов классов в стандартной библиотеке: