Namespaces
Variants

C++ standard libraries extensions

From cppreference.net

Версия 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 для следующих шаблонов классов в стандартной библиотеке:

Список шаблонов контейнеров, для которых предоставлены удобные псевдонимы

Поддержка массивов для shared_ptr

Определено в заголовочном файле <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 шаблоны переменных для следующих характеристик типов и других шаблонов классов в стандартной библиотеке:

Список признаков типов и других шаблонов классов, для которых предоставлены шаблоны переменных