Пространства имён
Варианты
Действия

Расширения стандартных библиотек C++

Материал из cppreference.com
 
 
Технические спецификации
Библиотека файловой системы(ТС файловой системы)
Основы библиотеки(ТС основ библиотеки)
Основы библиотеки 2(ТС основ библиотеки v2)
Основы библиотеки 3(ТС основы библиотеки v3)
Расширения для параллелизма(ТС параллелизма)
Расширения для параллелизма 2(ТС параллелизма v2)
Расширения для конкуренции 2(ТС конкуренции v2)
Концепты(ТС концепций)
Диапазоны(ТС диапазонов)
Рефлексия(ТС рефлексии)
Специальные математические функции(ТО специальные функции)
 
 

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

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

[править]Поддержка массива для 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>
вызывает функцию для кортежа аргументов
(шаблон функции)

Кроме того, ТС предоставляет многочисленные constexpr шаблоны переменных для следующих свойств типов и других шаблонов классов в стандартной библиотеке:

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