Расширения стандартных библиотек C++, версия 2
Материал из cppreference.com
< cpp | experimental
Версия 2 Расширений C++ для Основ Библиотеки, ISO/IEC ТС 19568:2017, определяет следующие новые компоненты для стандартной библиотеки C++ в дополнение к тем, которые определены в версии 1:
Идиома обнаружения C++
Определены в заголовочном файле
<experimental/type_traits> | |
| шаблоны псевдонимов, определяющие, правильно ли сформирован идентификатор шаблона (псевдоним шаблона) | |
тип класса, возвращаемый detected_t при ошибке (класс) | |
Обёртка, делающая константными объекты, подобные указателю
Определены в заголовочном файле
<experimental/propagate_const> | |
| обёртка, делающая константными объекты, подобные указателю (шаблон класса) | |
Указатели, не являющиеся собственниками
Определены в заголовочном файле
<experimental/memory> | |
| класс, представляющий указатель, не являющийся владельцем (шаблон класса) | |
создание std::array
Определены в заголовочном файле
<experimental/array> | |
(ТС основ библиотеки v2) |
создаёт объект std::array, размер и, возможно, тип элемента выводится из аргументов (шаблон функции) |
ostream_joiner
Определены в заголовочном файле
<experimental/iterator> | |
| итератор вывода, который записывает последовательные элементы в поток вывода, разделяя соседние элементы разделителем (шаблон класса) | |
Простые средства генерации случайных чисел
Поточный движок типа std::default_random_engine, инициализированный в непредсказуемое состояние, поддерживается для каждого потока и используется функциями, указанными ниже.
Определены в заголовочном файле
<experimental/random> | |
| генерирует случайное целое число в указанном диапазоне (шаблон функции) | |
| повторно загружает движок случайных чисел для каждого потока (функция) | |
Определены в заголовочном файле
<experimental/algorithm> | |
| выбирает n случайных элементов из последовательности (шаблон функции) | |
| случайным образом переупорядочивает элементы в диапазоне (шаблон функции) | |
Макросы тестирования функциональности
Определены в заголовочном файле
<experimental/type_traits> | |
__cpp_lib_experimental_logical_traits |
значение не менее 201511 указывает, что свойства типа логического оператора поддерживаются (макроконстанта) |
__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
Следующие компоненты основ библиотеки v2 были приняты в стандарт C++17.
Определены в заголовочном файле
<experimental/type_traits> | |
вариативный псевдоним шаблона для void (псевдоним шаблона) | |
Определены в заголовочном файле
<experimental/type_traits> | |
| метафункция с вариативным логическим И (шаблон класса) | |
| метафункция с вариативным логическим ИЛИ (шаблон класса) | |
| логическая метафункция НЕ (шаблон класса) | |
Определены в заголовочном файле
<experimental/functional> | |
| создаёт объект функцию, возвращающую дополнение результата объекта функции, который он содержит (шаблон функции) | |
Определены в заголовочном файле
<experimental/numeric> | |
constexpr шаблон функции, возвращающий наибольший общий делитель двух целых чисел (шаблон функции) | |
constexpr шаблон функции, возвращающий наименьшее общее кратное двух целых чисел (шаблон функции) | |
Объединено с C++20
Следующие компоненты основ библиотеки 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 из встроенного массива (шаблон функции) | |