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

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

Список шаблонов контейнеров, для которых предусмотрены удобные псевдонимы
  • std::vector
  • std::deque
  • std::forward_list
  • std::list
  • std::basic_string
  • std::map
  • std::multimap
  • std::set
  • std::multiset
  • std::match_results
  • std::unordered_map
  • std::unordered_multimap
  • std::unordered_set
  • std::unordered_multiset

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

Список свойств типов и других шаблонов классов, для которых предусмотрены шаблоны переменных
  • std::is_void
  • std::is_null_pointer
  • std::is_integral
  • std::is_floating_point
  • std::is_array
  • std::is_pointer
  • std::is_lvalue_reference
  • std::is_rvalue_reference
  • std::is_member_object_pointer
  • std::is_member_function_pointer
  • std::is_enum
  • std::is_union
  • std::is_class
  • std::is_function
  • std::is_reference
  • std::is_arithmetic
  • std::is_fundamental
  • std::is_object
  • std::is_scalar
  • std::is_compound
  • std::is_member_pointer
  • std::is_const
  • std::is_volatile
  • std::is_trivial
  • std::is_trivially_copyable
  • std::is_standard_layout
  • std::is_pod
  • std::is_literal_type
  • std::is_empty
  • std::is_polymorphic
  • std::is_abstract
  • std::is_final
  • std::is_signed
  • std::is_unsigned
  • std::is_constructible
  • std::is_trivially_constructible
  • std::is_nothrow_constructible
  • std::is_default_constructible
  • std::is_trivially_default_constructible
  • std::is_nothrow_default_constructible
  • std::is_copy_constructible
  • std::is_trivially_copy_constructible
  • std::is_nothrow_copy_constructible
  • std::is_move_constructible
  • std::is_trivially_move_constructible
  • std::is_nothrow_move_constructible
  • std::is_assignable
  • std::is_trivially_assignable
  • std::is_nothrow_assignable
  • std::is_copy_assignable
  • std::is_trivially_copy_assignable
  • std::is_nothrow_copy_assignable
  • std::is_move_assignable
  • std::is_trivially_move_assignable
  • std::is_nothrow_move_assignable
  • std::is_destructible
  • std::is_trivially_destructible
  • std::is_nothrow_destructible
  • std::has_virtual_destructor
  • std::alignment_of
  • std::rank
  • std::extent
  • std::is_same
  • std::is_base_of
  • std::is_convertible
  • std::ratio_equal
  • std::ratio_not_equal
  • std::ratio_less
  • std::ratio_less_equal
  • std::ratio_greater
  • std::ratio_greater_equal
  • std::tuple_size
  • std::chrono::treat_as_floating_point
  • std::is_error_code_enum
  • std::is_error_condition_enum
  • std::is_bind_expression
  • std::is_placeholder
  • std::uses_allocator