Namespaces
Variants

C++ standard libraries extensions, version 2

From cppreference.net

Версия 2 Расширений для Основ Библиотеки C++, ISO/IEC TS 19568:2017, определяет следующие новые компоненты для стандартной библиотеки C++, в дополнение к тем, что определены в версии 1 :

Содержание

Идиома обнаружения в C++

Определено в заголовочном файле <experimental/type_traits>
псевдонимы шаблонов, которые определяют, является ли template-id корректно сформированным
(псевдоним шаблона)
тип класса, возвращаемый detected_t при неудаче
(класс)

Константно-распространяющая обёртка для указатель-подобных объектов

Определено в заголовке <experimental/propagate_const>
обёртка с распространением константности для указатель-подобных объектов
(шаблон класса)

Невладеющие указатели

Определено в заголовочном файле <experimental/memory>
класс, представляющий невладеющий указатель
(шаблон класса)

std::array создание

Определено в заголовочном файле <experimental/array>
(library fundamentals TS v2)
создает объект std::array , размер и, опционально, тип элементов которого выводятся из аргументов
(шаблон функции)

ostream_joiner

Определено в заголовочном файле <experimental/iterator>
выходной итератор, записывающий последовательные элементы в выходной поток, разделяя смежные элементы разделителем
(шаблон класса)

Простые средства генерации случайных чисел

Для каждого потока поддерживается per-thread engine типа std::default_random_engine , инициализированный в непредсказуемом состоянии, который используется функциями ниже.

Определено в заголовке <experimental/random>
генерирует случайное целое число в указанном диапазоне
(шаблон функции)
переинициализирует поточно-ориентированный генератор случайных чисел
(функция)
Определено в заголовке <experimental/algorithm>
выбирает n случайных элементов из последовательности
(шаблон функции)
случайным образом переупорядочивает элементы в диапазоне
(шаблон функции)

Макросы проверки возможностей

Определено в заголовочном файле <experimental/type_traits>
__cpp_lib_experimental_logical_traits
значение не менее 201511 указывает, что поддерживаются traits логических операторов
(макро-константа)
__cpp_lib_experimental_detect
значение не менее 201505 указывает, что поддерживается идиома обнаружения
(макро-константа)
Определено в заголовочном файле <experimental/propagate_const>
__cpp_lib_experimental_propagate_const
значение не менее 201505 указывает, что поддерживается propagate_const
(макро-константа)
Определено в заголовочном файле <experimental/functional>
__cpp_lib_experimental_not_fn
значение не менее 201406 указывает, что поддерживается not_fn
(макро-константа)
Определено в заголовочном файле <experimental/memory>
__cpp_lib_experimental_observer_ptr
значение не менее 201411 указывает, что поддерживается observer_ptr
(макро-константа)
Определено в заголовочном файле <experimental/array>
__cpp_lib_experimental_make_array
значение не менее 201505 указывает, что поддерживается make_array
(макро-константа)
Определено в заголовочном файле <experimental/iterator>
__cpp_lib_experimental_ostream_joiner
значение не менее 201411 указывает, что поддерживается ostream_joiner
(макро-константа)
Определено в заголовочном файле <experimental/vector>
__cpp_lib_experimental_erase_if
значение не менее 201411 указывает, что поддерживается унифицированное удаление из контейнеров
(макро-константа)
Определено в заголовочном файле <experimental/numeric>
__cpp_lib_experimental_gcd_lcm
значение не менее 201411 указывает, что поддерживаются gcd и lcm
(макро-константа)
Определено в заголовочном файле <experimental/random>
__cpp_lib_experimental_randint
значение не менее 201511 указывает, что поддерживаются randint и связанные функции
(макро-константа)
Определено в заголовочном файле <experimental/source_location>
__cpp_lib_experimental_source_location
значение не менее 201505 указывает, что поддерживается source_location
(макро-константа)

Включено в C++17

Следующие компоненты библиотечных основ версии 2 были включены в стандарт C++17.

Определено в заголовочном файле <experimental/type_traits>
вариативный псевдоним-шаблон для void
(псевдоним-шаблон)
Определено в заголовочном файле <experimental/type_traits>
вариативный метафункциональный логический И
(шаблон класса)
вариативный метафункциональный логический ИЛИ
(шаблон класса)
метафункциональный логический НЕ
(шаблон класса)
Определено в заголовочном файле <experimental/functional>
создает функциональный объект, возвращающий дополнение результата хранимого функционального объекта
(шаблон функции)
Определено в заголовочном файле <experimental/numeric>
constexpr шаблон функции, возвращающий наибольший общий делитель двух целых чисел
(шаблон функции)
constexpr шаблон функции, возвращающий наименьшее общее кратное двух целых чисел
(шаблон функции)

Включено в C++20

Следующие компоненты библиотеки fundamentals v2 были включены в стандарт C++20.

Унифицированное удаление элементов контейнеров

Определено в заголовочном файле <experimental/string>
удаляет все элементы, равные определённому значению, из std::basic_string
(шаблон функции)
удаляет все элементы, удовлетворяющие предикату, из std::basic_string
(шаблон функции)
Определено в заголовочном файле <experimental/deque>
удаляет все элементы, равные определённому значению, из std::deque
(шаблон функции)
удаляет все элементы, удовлетворяющие предикату, из std::deque
(шаблон функции)
Определено в заголовочном файле <experimental/vector>
удаляет все элементы, равные определенному значению, из std::vector
(шаблон функции)
удаляет все элементы, удовлетворяющие предикату, из std::vector
(шаблон функции)
Определено в заголовочном файле <experimental/forward_list>
удаляет все элементы, равные определённому значению, из std::forward_list
(шаблон функции)
удаляет все элементы, удовлетворяющие предикату, из std::forward_list
(шаблон функции)
Определено в заголовочном файле <experimental/list>
удаляет все элементы, равные заданному значению, из std::list
(шаблон функции)
удаляет все элементы, удовлетворяющие предикату, из std::list
(шаблон функции)
Определено в заголовочном файле <experimental/map>
удаляет все элементы, удовлетворяющие предикату, из std::map
(шаблон функции)
удаляет все элементы, удовлетворяющие предикату, из std::multimap
(шаблон функции)
Определено в заголовочном файле <experimental/set>
удаляет все элементы, удовлетворяющие предикату, из std::set
(шаблон функции)
удаляет все элементы, удовлетворяющие предикату, из std::multiset
(шаблон функции)
Определено в заголовочном файле <experimental/unordered_map>
удаляет все элементы, удовлетворяющие предикату, из std::unordered_map
(шаблон функции)
удаляет все элементы, удовлетворяющие предикату, из std::unordered_multimap
(шаблон функции)
Определено в заголовочном файле <experimental/unordered_set>
удаляет все элементы, удовлетворяющие предикату, из std::unordered_set
(шаблон функции)
удаляет все элементы, удовлетворяющие предикату, из std::unordered_multiset
(шаблон функции)

Захват информации исходного кода

Определено в заголовочном файле <experimental/source_location>
класс, представляющий информацию об исходном коде, такую как имена файлов, номера строк и имена функций
(класс)

std::array преобразование

Определено в заголовочном файле <experimental/array>
создает объект std::array из встроенного массива
(шаблон функции)