---
name: "std::experimental"
section: "3"
platform: "linux"
package: "gcc"
version: "16.2.1+r23+gd564253eb6c8-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/std::experimental"
---

# std::experimental(3)

Namespace for features defined in ISO Technical Specifications.

## NAME

std::experimental - Namespace for features defined in ISO Technical Specifications.

## SYNOPSIS

### Classes

class **any**\
 A type-safe container of any type.  class **bad\_any\_cast**\
 Exception class thrown by a failed any\_cast.  class **bad\_optional\_access**\
 Exception class thrown when a disengaged optional object is dereferenced.  class **basic\_string\_view**\
 A non-owning reference to a string.  struct **in\_place\_t**\
 Tag type for in-place construction.  struct **nullopt\_t**\
 Tag type to disengage optional objects.  class **optional**\
 Class template for optional values.  class **ostream\_joiner**\
 Output iterator that inserts a delimiter between elements.  struct **owner\_less\< shared\_ptr\< \_Tp \> \>**\
 Partial specialization of owner\_less for shared\_ptr.  struct **owner\_less\< weak\_ptr\< \_Tp \> \>**\
 Partial specialization of owner\_less for weak\_ptr.  class **propagate\_const**\
 Const-propagating wrapper.

### Typedefs

template\<typename \_RAIter, typename \_Hash, typename \_Pred, typename \_Val = typename iterator\_traits\<\_RAIter\>::value\_type, typename \_Diff = typename iterator\_traits\<\_RAIter\>::difference\_type\> using **\_\_boyer\_moore\_base\_t**\
 template\<typename \_Tp\> using **\_\_propagate\_const\_elem\_type**\
 using **erased\_type**\
 using **string\_view**\
 using **u16string\_view**\
 using **u32string\_view**\
 using **wstring\_view**\

### Functions

template\<typename \_Fn, typename \_Tuple, std::size\_t... \_Idx\> constexpr decltype(auto) **\_\_apply\_impl** (\_Fn &&\_\_f, \_Tuple &&\_\_t, **std::index\_sequence**\< \_Idx... \>)\
 template\<typename \_Tp, size\_t \_Nm, size\_t... \_Idx\> constexpr **array**\< remove\_cv\_t\< \_Tp \>, \_Nm \> **\_\_to\_array** (\_Tp(&\_\_a)\[\_Nm\], **index\_sequence**\< \_Idx... \>)\
 std::default\_random\_engine & **\_S\_randint\_engine** ()\
 template\<typename \_ValueType\> \_ValueType **any\_cast** (const **any** &\_\_any)\
 Access the contained object.  template\<typename \_Fn, typename \_Tuple\> constexpr decltype(auto) **apply** (\_Fn &&\_\_f, \_Tuple &&\_\_t)\
 template\<typename \_Tp\> bool **atomic\_compare\_exchange\_strong** (shared\_ptr\< \_Tp \> \*\_\_p, shared\_ptr\< \_Tp \> \*\_\_v, shared\_ptr\< \_Tp \> \_\_w)\
 template\<typename \_Tp\> bool **atomic\_compare\_exchange\_strong\_explicit** (shared\_ptr\< \_Tp \> \*\_\_p, shared\_ptr\< \_Tp \> \*\_\_v, shared\_ptr\< \_Tp \> \_\_w, **memory\_order** \_\_success, **memory\_order** \_\_failure)\
 template\<typename \_Tp\> bool **atomic\_compare\_exchange\_weak** (shared\_ptr\< \_Tp \> \*\_\_p, shared\_ptr\< \_Tp \> \*\_\_v, shared\_ptr\< \_Tp \> \_\_w)\
 template\<typename \_Tp\> bool **atomic\_compare\_exchange\_weak\_explicit** (shared\_ptr\< \_Tp \> \*\_\_p, shared\_ptr\< \_Tp \> \*\_\_v, shared\_ptr\< \_Tp \> \_\_w, **memory\_order** \_\_success, **memory\_order** \_\_failure)\
 template\<typename \_Tp\> void **atomic\_exchange** (shared\_ptr\< \_Tp \> \*\_\_p, shared\_ptr\< \_Tp \> \_\_r)\
 template\<typename \_Tp\> shared\_ptr\< \_Tp \> **atomic\_exchange\_explicit** (const shared\_ptr\< \_Tp \> \*\_\_p, shared\_ptr\< \_Tp \> \_\_r, **memory\_order** \_\_mo)\
 template\<typename \_Tp\> bool **atomic\_is\_lock\_free** (const shared\_ptr\< \_Tp \> \*\_\_p)\
 template\<typename \_Tp\> shared\_ptr\< \_Tp \> **atomic\_load** (const shared\_ptr\< \_Tp \> \*\_\_p)\
 template\<typename \_Tp\> shared\_ptr\< \_Tp \> **atomic\_load\_explicit** (const shared\_ptr\< \_Tp \> \*\_\_p, **memory\_order** \_\_mo)\
 template\<typename \_Tp\> void **atomic\_store** (shared\_ptr\< \_Tp \> \*\_\_p, shared\_ptr\< \_Tp \> \_\_r)\
 template\<typename \_Tp\> shared\_ptr\< \_Tp \> **atomic\_store\_explicit** (const shared\_ptr\< \_Tp \> \*\_\_p, shared\_ptr\< \_Tp \> \_\_r, **memory\_order** \_\_mo)\
 template\<typename \_Tp, typename \_Tp1\> shared\_ptr\< \_Tp \> **const\_pointer\_cast** (const shared\_ptr\< \_Tp1 \> &\_\_r) noexcept\
 template\<typename \_Tp, typename \_Tp1\> shared\_ptr\< \_Tp \> **dynamic\_pointer\_cast** (const shared\_ptr\< \_Tp1 \> &\_\_r) noexcept\
 template\<typename \_CharT, typename \_Traits, typename \_Alloc, typename \_Up\> void **erase** (**basic\_string**\< \_CharT, \_Traits, \_Alloc \> &\_\_cont, const \_Up &\_\_value)\
 template\<typename \_Tp, typename \_Alloc, typename \_Up\> void **erase** (deque\< \_Tp, \_Alloc \> &\_\_cont, const \_Up &\_\_value)\
 template\<typename \_Tp, typename \_Alloc, typename \_Up\> void **erase** (forward\_list\< \_Tp, \_Alloc \> &\_\_cont, const \_Up &\_\_value)\
 template\<typename \_Tp, typename \_Alloc, typename \_Up\> void **erase** (list\< \_Tp, \_Alloc \> &\_\_cont, const \_Up &\_\_value)\
 template\<typename \_Tp, typename \_Alloc, typename \_Up\> void **erase** (vector\< \_Tp, \_Alloc \> &\_\_cont, const \_Up &\_\_value)\
 template\<typename \_CharT, typename \_Traits, typename \_Alloc, typename \_Predicate\> void **erase\_if** (**basic\_string**\< \_CharT, \_Traits, \_Alloc \> &\_\_cont, \_Predicate \_\_pred)\
 template\<typename \_Tp, typename \_Alloc, typename \_Predicate\> void **erase\_if** (deque\< \_Tp, \_Alloc \> &\_\_cont, \_Predicate \_\_pred)\
 template\<typename \_Tp, typename \_Alloc, typename \_Predicate\> void **erase\_if** (forward\_list\< \_Tp, \_Alloc \> &\_\_cont, \_Predicate \_\_pred)\
 template\<typename \_Tp, typename \_Alloc, typename \_Predicate\> void **erase\_if** (list\< \_Tp, \_Alloc \> &\_\_cont, \_Predicate \_\_pred)\
 template\<typename \_Key, typename \_Tp, typename \_Compare, typename \_Alloc, typename \_Predicate\> void **erase\_if** (map\< \_Key, \_Tp, \_Compare, \_Alloc \> &\_\_cont, \_Predicate \_\_pred)\
 template\<typename \_Key, typename \_Tp, typename \_Compare, typename \_Alloc, typename \_Predicate\> void **erase\_if** (multimap\< \_Key, \_Tp, \_Compare, \_Alloc \> &\_\_cont, \_Predicate \_\_pred)\
 template\<typename \_Key, typename \_Compare, typename \_Alloc, typename \_Predicate\> void **erase\_if** (multiset\< \_Key, \_Compare, \_Alloc \> &\_\_cont, \_Predicate \_\_pred)\
 template\<typename \_Key, typename \_Compare, typename \_Alloc, typename \_Predicate\> void **erase\_if** (set\< \_Key, \_Compare, \_Alloc \> &\_\_cont, \_Predicate \_\_pred)\
 template\<typename \_Key, typename \_Tp, typename \_Hash, typename \_CPred, typename \_Alloc, typename \_Predicate\> void **erase\_if** (unordered\_map\< \_Key, \_Tp, \_Hash, \_CPred, \_Alloc \> &\_\_cont, \_Predicate \_\_pred)\
 template\<typename \_Key, typename \_Tp, typename \_Hash, typename \_CPred, typename \_Alloc, typename \_Predicate\> void **erase\_if** (unordered\_multimap\< \_Key, \_Tp, \_Hash, \_CPred, \_Alloc \> &\_\_cont, \_Predicate \_\_pred)\
 template\<typename \_Key, typename \_Hash, typename \_CPred, typename \_Alloc, typename \_Predicate\> void **erase\_if** (unordered\_multiset\< \_Key, \_Hash, \_CPred, \_Alloc \> &\_\_cont, \_Predicate \_\_pred)\
 template\<typename \_Key, typename \_Hash, typename \_CPred, typename \_Alloc, typename \_Predicate\> void **erase\_if** (unordered\_set\< \_Key, \_Hash, \_CPred, \_Alloc \> &\_\_cont, \_Predicate \_\_pred)\
 template\<typename \_Tp, typename \_Alloc, typename \_Predicate\> void **erase\_if** (vector\< \_Tp, \_Alloc \> &\_\_cont, \_Predicate \_\_pred)\
 template\<typename \_Mn, typename \_Nn\> constexpr **common\_type\_t**\< \_Mn, \_Nn \> **gcd** (\_Mn \_\_m, \_Nn \_\_n) noexcept\
 Greatest common divisor.  template\<typename \_Del, typename \_Tp\> \_Del \* **get\_deleter** (const shared\_ptr\< \_Tp \> &\_\_p) noexcept\
 C++14 20.8.2.2.10.  template\<typename \_Tp\> constexpr const \_Tp & **get\_underlying** (const **propagate\_const**\< \_Tp \> &\_\_pt) noexcept\
 template\<typename \_Tp\> constexpr \_Tp & **get\_underlying** (**propagate\_const**\< \_Tp \> &\_\_pt) noexcept\
 template\<typename \_Mn, typename \_Nn\> constexpr **common\_type\_t**\< \_Mn, \_Nn \> **lcm** (\_Mn \_\_m, \_Nn \_\_n)\
 Least common multiple.  template\<typename \_Dest = void, typename... \_Types\> constexpr **array**\< typename \_\_make\_array\_elem\< \_Dest, \_Types... \>::type, sizeof...(\_Types)\> **make\_array** (\_Types &&... \_\_t)\
 Create a std::array from a variable-length list of arguments.  template\<typename \_RAIter, typename \_Hash = std::hash\<typename std::iterator\_traits\<\_RAIter\>::value\_type\>, typename \_BinaryPredicate = equal\_to\<\>\> boyer\_moore\_horspool\_searcher\< \_RAIter, \_Hash, \_BinaryPredicate \> **make\_boyer\_moore\_horspool\_searcher** (\_RAIter \_\_pat\_first, \_RAIter \_\_pat\_last, \_Hash \_\_hf=\_Hash(), \_BinaryPredicate \_\_pred=\_BinaryPredicate())\
 Generator function for boyer\_moore\_horspool\_searcher.  template\<typename \_RAIter, typename \_Hash = std::hash\<typename std::iterator\_traits\<\_RAIter\>::value\_type\>, typename \_BinaryPredicate = equal\_to\<\>\> boyer\_moore\_searcher\< \_RAIter, \_Hash, \_BinaryPredicate \> **make\_boyer\_moore\_searcher** (\_RAIter \_\_pat\_first, \_RAIter \_\_pat\_last, \_Hash \_\_hf=\_Hash(), \_BinaryPredicate \_\_pred=\_BinaryPredicate())\
 Generator function for boyer\_moore\_searcher.  template\<typename \_ForwardIterator, typename \_BinaryPredicate = std::equal\_to\<\>\> default\_searcher\< \_ForwardIterator, \_BinaryPredicate \> **make\_default\_searcher** (\_ForwardIterator \_\_pat\_first, \_ForwardIterator \_\_pat\_last, \_BinaryPredicate \_\_pred=\_BinaryPredicate())\
 Generator function for default\_searcher.  template\<typename \_Tp\> constexpr observer\_ptr\< \_Tp \> **make\_observer** (\_Tp \*\_\_p) noexcept\
 template\<typename \_CharT, typename \_Traits, typename \_DelimT\> **ostream\_joiner**\< **decay\_t**\< \_DelimT \>, \_CharT, \_Traits \> **make\_ostream\_joiner** (**basic\_ostream**\< \_CharT, \_Traits \> &\_\_os, \_DelimT &&\_\_delimiter)\
 Object generator for ostream\_joiner.  template\<typename \_Fn\> auto **not\_fn** (\_Fn &&\_\_fn) noexcept(**std::is\_nothrow\_constructible**\< **std::decay\_t**\< \_Fn \>, \_Fn && \>::value)\
 \[func.not\_fn\] Function template not\_fn  template\<typename \_CharT, typename \_Traits\> constexpr bool **operator!=** (\_\_type\_identity\_t\< **basic\_string\_view**\< \_CharT, \_Traits \> \> \_\_x, **basic\_string\_view**\< \_CharT, \_Traits \> \_\_y) noexcept\
 template\<typename \_CharT, typename \_Traits\> constexpr bool **operator!=** (**basic\_string\_view**\< \_CharT, \_Traits \> \_\_x, \_\_type\_identity\_t\< **basic\_string\_view**\< \_CharT, \_Traits \> \> \_\_y) noexcept\
 template\<typename \_CharT, typename \_Traits\> constexpr bool **operator!=** (**basic\_string\_view**\< \_CharT, \_Traits \> \_\_x, **basic\_string\_view**\< \_CharT, \_Traits \> \_\_y) noexcept\
 template\<typename \_Tp, typename \_Up\> constexpr bool **operator!=** (const \_Tp &\_\_t, const **propagate\_const**\< \_Up \> &\_\_pu)\
 template\<typename \_Tp, typename \_Up\> constexpr bool **operator!=** (const **propagate\_const**\< \_Tp \> &\_\_pt, const \_Up &\_\_u)\
 template\<typename \_Tp, typename \_Up\> constexpr bool **operator!=** (const **propagate\_const**\< \_Tp \> &\_\_pt, const **propagate\_const**\< \_Up \> &\_\_pu)\
 template\<typename \_Tp\> constexpr bool **operator!=** (const **propagate\_const**\< \_Tp \> &\_\_pt, nullptr\_t)\
 template\<typename \_Tp\> bool **operator!=** (const shared\_ptr\< \_Tp \> &\_\_a, nullptr\_t) noexcept\
 template\<typename \_Tp1, typename \_Tp2\> bool **operator!=** (const shared\_ptr\< \_Tp1 \> &\_\_a, const shared\_ptr\< \_Tp2 \> &\_\_b) noexcept\
 template\<typename \_Tp\> constexpr bool **operator!=** (nullptr\_t, const **propagate\_const**\< \_Tp \> &\_\_pu)\
 template\<typename \_Tp\> bool **operator!=** (nullptr\_t, const shared\_ptr\< \_Tp \> &\_\_a) noexcept\
 template\<typename \_Tp\> constexpr bool **operator!=** (nullptr\_t, observer\_ptr\< \_Tp \> \_\_p) noexcept\
 template\<typename \_Tp\> bool **operator!=** (observer\_ptr\< \_Tp \> \_\_p, nullptr\_t) noexcept\
 template\<typename \_Tp, typename \_Up\> constexpr bool **operator!=** (observer\_ptr\< \_Tp \> \_\_p1, observer\_ptr\< \_Up \> \_\_p2)\
 constexpr **basic\_string\_view**\< char \> **operator''sv** (const char \*\_\_str, size\_t \_\_len) noexcept\
 constexpr **basic\_string\_view**\< char16\_t \> **operator''sv** (const char16\_t \*\_\_str, size\_t \_\_len) noexcept\
 constexpr **basic\_string\_view**\< char32\_t \> **operator''sv** (const char32\_t \*\_\_str, size\_t \_\_len) noexcept\
 constexpr **basic\_string\_view**\< wchar\_t \> **operator''sv** (const wchar\_t \*\_\_str, size\_t \_\_len) noexcept\
 template\<typename \_CharT, typename \_Traits\> constexpr bool **operator\<** (\_\_type\_identity\_t\< **basic\_string\_view**\< \_CharT, \_Traits \> \> \_\_x, **basic\_string\_view**\< \_CharT, \_Traits \> \_\_y) noexcept\
 template\<typename \_CharT, typename \_Traits\> constexpr bool **operator\<** (**basic\_string\_view**\< \_CharT, \_Traits \> \_\_x, \_\_type\_identity\_t\< **basic\_string\_view**\< \_CharT, \_Traits \> \> \_\_y) noexcept\
 template\<typename \_CharT, typename \_Traits\> constexpr bool **operator\<** (**basic\_string\_view**\< \_CharT, \_Traits \> \_\_x, **basic\_string\_view**\< \_CharT, \_Traits \> \_\_y) noexcept\
 template\<typename \_Tp, typename \_Up\> constexpr bool **operator\<** (const \_Tp &\_\_t, const **propagate\_const**\< \_Up \> &\_\_pu)\
 template\<typename \_Tp, typename \_Up\> constexpr bool **operator\<** (const **propagate\_const**\< \_Tp \> &\_\_pt, const \_Up &\_\_u)\
 template\<typename \_Tp, typename \_Up\> constexpr bool **operator\<** (const **propagate\_const**\< \_Tp \> &\_\_pt, const **propagate\_const**\< \_Up \> &\_\_pu)\
 template\<typename \_Tp\> bool **operator\<** (const shared\_ptr\< \_Tp \> &\_\_a, nullptr\_t) noexcept\
 template\<typename \_Tp1, typename \_Tp2\> bool **operator\<** (const shared\_ptr\< \_Tp1 \> &\_\_a, const shared\_ptr\< \_Tp2 \> &\_\_b) noexcept\
 template\<typename \_Tp\> bool **operator\<** (nullptr\_t, const shared\_ptr\< \_Tp \> &\_\_a) noexcept\
 template\<typename \_Tp, typename \_Up\> constexpr bool **operator\<** (observer\_ptr\< \_Tp \> \_\_p1, observer\_ptr\< \_Up \> \_\_p2)\
 template\<typename \_CharT, typename \_Traits\> **basic\_ostream**\< \_CharT, \_Traits \> & **operator\<\<** (**basic\_ostream**\< \_CharT, \_Traits \> &\_\_os, **basic\_string\_view**\< \_CharT, \_Traits \> \_\_str)\
 template\<typename \_Ch, typename \_Tr, typename \_Tp\> **std::basic\_ostream**\< \_Ch, \_Tr \> & **operator\<\<** (**std::basic\_ostream**\< \_Ch, \_Tr \> &\_\_os, const shared\_ptr\< \_Tp \> &\_\_p)\
 template\<typename \_CharT, typename \_Traits\> constexpr bool **operator\<=** (\_\_type\_identity\_t\< **basic\_string\_view**\< \_CharT, \_Traits \> \> \_\_x, **basic\_string\_view**\< \_CharT, \_Traits \> \_\_y) noexcept\
 template\<typename \_CharT, typename \_Traits\> constexpr bool **operator\<=** (**basic\_string\_view**\< \_CharT, \_Traits \> \_\_x, \_\_type\_identity\_t\< **basic\_string\_view**\< \_CharT, \_Traits \> \> \_\_y) noexcept\
 template\<typename \_CharT, typename \_Traits\> constexpr bool **operator\<=** (**basic\_string\_view**\< \_CharT, \_Traits \> \_\_x, **basic\_string\_view**\< \_CharT, \_Traits \> \_\_y) noexcept\
 template\<typename \_Tp, typename \_Up\> constexpr bool **operator\<=** (const \_Tp &\_\_t, const **propagate\_const**\< \_Up \> &\_\_pu)\
 template\<typename \_Tp, typename \_Up\> constexpr bool **operator\<=** (const **propagate\_const**\< \_Tp \> &\_\_pt, const \_Up &\_\_u)\
 template\<typename \_Tp, typename \_Up\> constexpr bool **operator\<=** (const **propagate\_const**\< \_Tp \> &\_\_pt, const **propagate\_const**\< \_Up \> &\_\_pu)\
 template\<typename \_Tp\> bool **operator\<=** (const shared\_ptr\< \_Tp \> &\_\_a, nullptr\_t) noexcept\
 template\<typename \_Tp1, typename \_Tp2\> bool **operator\<=** (const shared\_ptr\< \_Tp1 \> &\_\_a, const shared\_ptr\< \_Tp2 \> &\_\_b) noexcept\
 template\<typename \_Tp\> bool **operator\<=** (nullptr\_t, const shared\_ptr\< \_Tp \> &\_\_a) noexcept\
 template\<typename \_Tp, typename \_Up\> constexpr bool **operator\<=** (observer\_ptr\< \_Tp \> \_\_p1, observer\_ptr\< \_Up \> \_\_p2)\
 template\<typename \_CharT, typename \_Traits\> constexpr bool **operator==** (\_\_type\_identity\_t\< **basic\_string\_view**\< \_CharT, \_Traits \> \> \_\_x, **basic\_string\_view**\< \_CharT, \_Traits \> \_\_y) noexcept\
 template\<typename \_CharT, typename \_Traits\> constexpr bool **operator==** (**basic\_string\_view**\< \_CharT, \_Traits \> \_\_x, \_\_type\_identity\_t\< **basic\_string\_view**\< \_CharT, \_Traits \> \> \_\_y) noexcept\
 template\<typename \_CharT, typename \_Traits\> constexpr bool **operator==** (**basic\_string\_view**\< \_CharT, \_Traits \> \_\_x, **basic\_string\_view**\< \_CharT, \_Traits \> \_\_y) noexcept\
 template\<typename \_Tp, typename \_Up\> constexpr bool **operator==** (const \_Tp &\_\_t, const **propagate\_const**\< \_Up \> &\_\_pu)\
 template\<typename \_Tp, typename \_Up\> constexpr bool **operator==** (const **propagate\_const**\< \_Tp \> &\_\_pt, const \_Up &\_\_u)\
 template\<typename \_Tp, typename \_Up\> constexpr bool **operator==** (const **propagate\_const**\< \_Tp \> &\_\_pt, const **propagate\_const**\< \_Up \> &\_\_pu)\
 template\<typename \_Tp\> constexpr bool **operator==** (const **propagate\_const**\< \_Tp \> &\_\_pt, nullptr\_t)\
 template\<typename \_Tp\> bool **operator==** (const shared\_ptr\< \_Tp \> &\_\_a, nullptr\_t) noexcept\
 template\<typename \_Tp1, typename \_Tp2\> bool **operator==** (const shared\_ptr\< \_Tp1 \> &\_\_a, const shared\_ptr\< \_Tp2 \> &\_\_b) noexcept\
 template\<typename \_Tp\> constexpr bool **operator==** (nullptr\_t, const **propagate\_const**\< \_Tp \> &\_\_pu)\
 template\<typename \_Tp\> bool **operator==** (nullptr\_t, const shared\_ptr\< \_Tp \> &\_\_a) noexcept\
 template\<typename \_Tp\> constexpr bool **operator==** (nullptr\_t, observer\_ptr\< \_Tp \> \_\_p) noexcept\
 template\<typename \_Tp\> constexpr bool **operator==** (observer\_ptr\< \_Tp \> \_\_p, nullptr\_t) noexcept\
 template\<typename \_Tp, typename \_Up\> constexpr bool **operator==** (observer\_ptr\< \_Tp \> \_\_p1, observer\_ptr\< \_Up \> \_\_p2)\
 template\<typename \_CharT, typename \_Traits\> constexpr bool **operator\>** (\_\_type\_identity\_t\< **basic\_string\_view**\< \_CharT, \_Traits \> \> \_\_x, **basic\_string\_view**\< \_CharT, \_Traits \> \_\_y) noexcept\
 template\<typename \_CharT, typename \_Traits\> constexpr bool **operator\>** (**basic\_string\_view**\< \_CharT, \_Traits \> \_\_x, \_\_type\_identity\_t\< **basic\_string\_view**\< \_CharT, \_Traits \> \> \_\_y) noexcept\
 template\<typename \_CharT, typename \_Traits\> constexpr bool **operator\>** (**basic\_string\_view**\< \_CharT, \_Traits \> \_\_x, **basic\_string\_view**\< \_CharT, \_Traits \> \_\_y) noexcept\
 template\<typename \_Tp, typename \_Up\> constexpr bool **operator\>** (const \_Tp &\_\_t, const **propagate\_const**\< \_Up \> &\_\_pu)\
 template\<typename \_Tp, typename \_Up\> constexpr bool **operator\>** (const **propagate\_const**\< \_Tp \> &\_\_pt, const \_Up &\_\_u)\
 template\<typename \_Tp, typename \_Up\> constexpr bool **operator\>** (const **propagate\_const**\< \_Tp \> &\_\_pt, const **propagate\_const**\< \_Up \> &\_\_pu)\
 template\<typename \_Tp\> bool **operator\>** (const shared\_ptr\< \_Tp \> &\_\_a, nullptr\_t) noexcept\
 template\<typename \_Tp1, typename \_Tp2\> bool **operator\>** (const shared\_ptr\< \_Tp1 \> &\_\_a, const shared\_ptr\< \_Tp2 \> &\_\_b) noexcept\
 template\<typename \_Tp\> bool **operator\>** (nullptr\_t, const shared\_ptr\< \_Tp \> &\_\_a) noexcept\
 template\<typename \_Tp, typename \_Up\> constexpr bool **operator\>** (observer\_ptr\< \_Tp \> \_\_p1, observer\_ptr\< \_Up \> \_\_p2)\
 template\<typename \_CharT, typename \_Traits\> constexpr bool **operator\>=** (\_\_type\_identity\_t\< **basic\_string\_view**\< \_CharT, \_Traits \> \> \_\_x, **basic\_string\_view**\< \_CharT, \_Traits \> \_\_y) noexcept\
 template\<typename \_CharT, typename \_Traits\> constexpr bool **operator\>=** (**basic\_string\_view**\< \_CharT, \_Traits \> \_\_x, \_\_type\_identity\_t\< **basic\_string\_view**\< \_CharT, \_Traits \> \> \_\_y) noexcept\
 template\<typename \_CharT, typename \_Traits\> constexpr bool **operator\>=** (**basic\_string\_view**\< \_CharT, \_Traits \> \_\_x, **basic\_string\_view**\< \_CharT, \_Traits \> \_\_y) noexcept\
 template\<typename \_Tp, typename \_Up\> constexpr bool **operator\>=** (const \_Tp &\_\_t, const **propagate\_const**\< \_Up \> &\_\_pu)\
 template\<typename \_Tp, typename \_Up\> constexpr bool **operator\>=** (const **propagate\_const**\< \_Tp \> &\_\_pt, const \_Up &\_\_u)\
 template\<typename \_Tp, typename \_Up\> constexpr bool **operator\>=** (const **propagate\_const**\< \_Tp \> &\_\_pt, const **propagate\_const**\< \_Up \> &\_\_pu)\
 template\<typename \_Tp\> bool **operator\>=** (const shared\_ptr\< \_Tp \> &\_\_a, nullptr\_t) noexcept\
 template\<typename \_Tp1, typename \_Tp2\> bool **operator\>=** (const shared\_ptr\< \_Tp1 \> &\_\_a, const shared\_ptr\< \_Tp2 \> &\_\_b) noexcept\
 template\<typename \_Tp\> bool **operator\>=** (nullptr\_t, const shared\_ptr\< \_Tp \> &\_\_a) noexcept\
 template\<typename \_Tp, typename \_Up\> constexpr bool **operator\>=** (observer\_ptr\< \_Tp \> \_\_p1, observer\_ptr\< \_Up \> \_\_p2)\
 template\<typename \_IntType\> \_IntType **randint** (\_IntType \_\_a, \_IntType \_\_b)\
 template\<typename \_Tp, typename \_Tp1\> shared\_ptr\< \_Tp \> **reinterpret\_pointer\_cast** (const shared\_ptr\< \_Tp1 \> &\_\_r) noexcept\
 void **reseed** ()\
 void **reseed** (**default\_random\_engine::result\_type** \_\_value)\
 template\<typename \_PopulationIterator, typename \_SampleIterator, typename \_Distance\> \_SampleIterator **sample** (\_PopulationIterator \_\_first, \_PopulationIterator \_\_last, \_SampleIterator \_\_out, \_Distance \_\_n)\
 template\<typename \_PopulationIterator, typename \_SampleIterator, typename \_Distance, typename \_UniformRandomNumberGenerator\> \_SampleIterator **sample** (\_PopulationIterator \_\_first, \_PopulationIterator \_\_last, \_SampleIterator \_\_out, \_Distance \_\_n, \_UniformRandomNumberGenerator &&\_\_g)\
 Take a random sample from a population.  template\<typename \_ForwardIterator, typename \_Searcher\> \_ForwardIterator **search** (\_ForwardIterator \_\_first, \_ForwardIterator \_\_last, const \_Searcher &\_\_searcher)\
 template\<typename \_RandomAccessIterator\> void **shuffle** (\_RandomAccessIterator \_\_first, \_RandomAccessIterator \_\_last)\
 template\<typename \_Tp, typename \_Tp1\> shared\_ptr\< \_Tp \> **static\_pointer\_cast** (const shared\_ptr\< \_Tp1 \> &\_\_r) noexcept\
 void **swap** (**any** &\_\_x, **any** &\_\_y) noexcept\
 Exchange the states of two any objects.  template\<typename \_Tp\> constexpr void **swap** (observer\_ptr\< \_Tp \> &\_\_p1, observer\_ptr\< \_Tp \> &\_\_p2) noexcept\
 template\<typename \_Tp\> constexpr **enable\_if\_t**\< \_\_is\_swappable\< \_Tp \>::value, void \> **swap** (**propagate\_const**\< \_Tp \> &\_\_pt, **propagate\_const**\< \_Tp \> &\_\_pt2) noexcept(\_\_is\_nothrow\_swappable\< \_Tp \>::value)\
 template\<typename \_Tp\> void **swap** (shared\_ptr\< \_Tp \> &\_\_a, shared\_ptr\< \_Tp \> &\_\_b) noexcept\
 template\<typename \_Tp\> void **swap** (weak\_ptr\< \_Tp \> &\_\_a, weak\_ptr\< \_Tp \> &\_\_b) noexcept\
 template\<typename \_Tp, size\_t \_Nm\> constexpr **array**\< remove\_cv\_t\< \_Tp \>, \_Nm \> **to\_array** (\_Tp(&\_\_a)\[\_Nm\]) noexcept(**is\_nothrow\_constructible**\< remove\_cv\_t\< \_Tp \>, \_Tp & \>::value)\
 Create a std::array from an array.

template\<typename \_ValueType\> \_ValueType **any\_cast** (**any** &\_\_any)\
 Access the contained object.  template\<typename \_ValueType, typename **enable\_if**\<!**is\_move\_constructible**\< \_ValueType \>::value\|\|**is\_lvalue\_reference**\< \_ValueType \>::value, bool \>::type = true\> \_ValueType **any\_cast** (**any** &&\_\_any)\
 Access the contained object.  template\<typename \_ValueType, typename **enable\_if**\< **is\_move\_constructible**\< \_ValueType \>::value &&!**is\_lvalue\_reference**\< \_ValueType \>::value, bool \>::type = false\> \_ValueType **any\_cast** (**any** &&\_\_any)\
 Access the contained object.

template\<typename \_ValueType\> const \_ValueType \* **any\_cast** (const **any** \*\_\_any) noexcept\
 Access the contained object.  template\<typename \_ValueType\> \_ValueType \* **any\_cast** (**any** \*\_\_any) noexcept\
 Access the contained object.

### Variables

template\<typename \_Yp, typename \_Tp\> constexpr bool **\_\_sp\_compatible\_v**\
 template\<typename \_Tp, typename \_Yp\> constexpr bool **\_\_sp\_is\_constructible\_v**\
 constexpr **in\_place\_t** **in\_place**\
 Tag for in-place construction.  template\<typename \_Tp\> constexpr bool **is\_bind\_expression\_v**\
 Variable template for std::is\_bind\_expression.  template\<typename \_Tp\> constexpr bool **is\_error\_code\_enum\_v**\
 template\<typename \_Tp\> constexpr bool **is\_error\_condition\_enum\_v**\
 template\<typename \_Tp\> constexpr int **is\_placeholder\_v**\
 Variable template for std::is\_placeholder.  constexpr **nullopt\_t** **nullopt**\
 Tag to disengage optional objects.  template\<typename \_R1, typename \_R2\> constexpr bool **ratio\_equal\_v**\
 template\<typename \_R1, typename \_R2\> constexpr bool **ratio\_greater\_equal\_v**\
 template\<typename \_R1, typename \_R2\> constexpr bool **ratio\_greater\_v**\
 template\<typename \_R1, typename \_R2\> constexpr bool **ratio\_less\_equal\_v**\
 template\<typename \_R1, typename \_R2\> constexpr bool **ratio\_less\_v**\
 template\<typename \_R1, typename \_R2\> constexpr bool **ratio\_not\_equal\_v**\
 template\<typename \_Tp\> constexpr size\_t **tuple\_size\_v**\

template\<typename \_Tp\> constexpr bool **is\_void\_v**\
 template\<typename \_Tp\> constexpr bool **is\_null\_pointer\_v**\
 template\<typename \_Tp\> constexpr bool **is\_integral\_v**\
 template\<typename \_Tp\> constexpr bool **is\_floating\_point\_v**\
 template\<typename \_Tp\> constexpr bool **is\_array\_v**\
 template\<typename \_Tp\> constexpr bool **is\_pointer\_v**\
 template\<typename \_Tp\> constexpr bool **is\_lvalue\_reference\_v**\
 template\<typename \_Tp\> constexpr bool **is\_rvalue\_reference\_v**\
 template\<typename \_Tp\> constexpr bool **is\_member\_object\_pointer\_v**\
 template\<typename \_Tp\> constexpr bool **is\_member\_function\_pointer\_v**\
 template\<typename \_Tp\> constexpr bool **is\_enum\_v**\
 template\<typename \_Tp\> constexpr bool **is\_union\_v**\
 template\<typename \_Tp\> constexpr bool **is\_class\_v**\
 template\<typename \_Tp\> constexpr bool **is\_function\_v**\
 template\<typename \_Tp\> constexpr bool **is\_reference\_v**\
 template\<typename \_Tp\> constexpr bool **is\_arithmetic\_v**\
 template\<typename \_Tp\> constexpr bool **is\_fundamental\_v**\
 template\<typename \_Tp\> constexpr bool **is\_object\_v**\
 template\<typename \_Tp\> constexpr bool **is\_scalar\_v**\
 template\<typename \_Tp\> constexpr bool **is\_compound\_v**\
 template\<typename \_Tp\> constexpr bool **is\_member\_pointer\_v**\
 template\<typename \_Tp\> constexpr bool **is\_const\_v**\
 template\<typename \_Tp\> constexpr bool **is\_volatile\_v**\
 template\<typename \_Tp\> constexpr bool **is\_trivial\_v**\
 template\<typename \_Tp\> constexpr bool **is\_trivially\_copyable\_v**\
 template\<typename \_Tp\> constexpr bool **is\_standard\_layout\_v**\
 template\<typename \_Tp\> constexpr bool **is\_pod\_v**\
 template\<typename \_Tp\> constexpr bool **is\_literal\_type\_v**\
 template\<typename \_Tp\> constexpr bool **is\_empty\_v**\
 template\<typename \_Tp\> constexpr bool **is\_polymorphic\_v**\
 template\<typename \_Tp\> constexpr bool **is\_abstract\_v**\
 template\<typename \_Tp\> constexpr bool **is\_final\_v**\
 template\<typename \_Tp\> constexpr bool **is\_signed\_v**\
 template\<typename \_Tp\> constexpr bool **is\_unsigned\_v**\
 template\<typename \_Tp, typename... \_Args\> constexpr bool **is\_constructible\_v**\
 template\<typename \_Tp\> constexpr bool **is\_default\_constructible\_v**\
 template\<typename \_Tp\> constexpr bool **is\_copy\_constructible\_v**\
 template\<typename \_Tp\> constexpr bool **is\_move\_constructible\_v**\
 template\<typename \_Tp, typename \_Up\> constexpr bool **is\_assignable\_v**\
 template\<typename \_Tp\> constexpr bool **is\_copy\_assignable\_v**\
 template\<typename \_Tp\> constexpr bool **is\_move\_assignable\_v**\
 template\<typename \_Tp\> constexpr bool **is\_destructible\_v**\
 template\<typename \_Tp, typename... \_Args\> constexpr bool **is\_trivially\_constructible\_v**\
 template\<typename \_Tp\> constexpr bool **is\_trivially\_default\_constructible\_v**\
 template\<typename \_Tp\> constexpr bool **is\_trivially\_copy\_constructible\_v**\
 template\<typename \_Tp\> constexpr bool **is\_trivially\_move\_constructible\_v**\
 template\<typename \_Tp, typename \_Up\> constexpr bool **is\_trivially\_assignable\_v**\
 template\<typename \_Tp\> constexpr bool **is\_trivially\_copy\_assignable\_v**\
 template\<typename \_Tp\> constexpr bool **is\_trivially\_move\_assignable\_v**\
 template\<typename \_Tp\> constexpr bool **is\_trivially\_destructible\_v**\
 template\<typename \_Tp, typename... \_Args\> constexpr bool **is\_nothrow\_constructible\_v**\
 template\<typename \_Tp\> constexpr bool **is\_nothrow\_default\_constructible\_v**\
 template\<typename \_Tp\> constexpr bool **is\_nothrow\_copy\_constructible\_v**\
 template\<typename \_Tp\> constexpr bool **is\_nothrow\_move\_constructible\_v**\
 template\<typename \_Tp, typename \_Up\> constexpr bool **is\_nothrow\_assignable\_v**\
 template\<typename \_Tp\> constexpr bool **is\_nothrow\_copy\_assignable\_v**\
 template\<typename \_Tp\> constexpr bool **is\_nothrow\_move\_assignable\_v**\
 template\<typename \_Tp\> constexpr bool **is\_nothrow\_destructible\_v**\
 template\<typename \_Tp\> constexpr bool **has\_virtual\_destructor\_v**\
 template\<typename \_Tp\> constexpr size\_t **alignment\_of\_v**\
 template\<typename \_Tp\> constexpr size\_t **rank\_v**\
 template\<typename \_Tp, unsigned \_Idx = 0\> constexpr size\_t **extent\_v**\
 template\<typename \_Tp, typename \_Up\> constexpr bool **is\_same\_v**\
 template\<typename \_Tp\> constexpr bool **is\_same\_v\< \_Tp, \_Tp \>**\
 template\<typename \_Base, typename \_Derived\> constexpr bool **is\_base\_of\_v**\
 template\<typename \_From, typename \_To\> constexpr bool **is\_convertible\_v**\

template\<typename... \_Bn\> constexpr bool **conjunction\_v**\
 template\<typename... \_Bn\> constexpr bool **disjunction\_v**\
 template\<typename \_Pp\> constexpr bool **negation\_v**\
 template\<typename...\> using **void\_t**\
 A metafunction that always yields void, used for detecting valid types.  template\<typename \_Default, template\< typename... \> class \_Op, typename... \_Args\> using **detected\_or**\
 A metafunction that always yields void, used for detecting valid types.  template\<typename \_Default, template\< typename... \> class \_Op, typename... \_Args\> using **detected\_or\_t**\
 A metafunction that always yields void, used for detecting valid types.  template\<template\< typename... \> class \_Op, typename... \_Args\> using **detected\_t**\
 A metafunction that always yields void, used for detecting valid types.  template\<template\< typename... \> class \_Op, typename... \_Args\> using **is\_detected**\
 A metafunction that always yields void, used for detecting valid types.  template\<typename \_Expected, template\< typename... \> class \_Op, typename... \_Args\> using **is\_detected\_exact**\
 A metafunction that always yields void, used for detecting valid types.  template\<typename \_To, template\< typename... \> class \_Op, typename... \_Args\> using **is\_detected\_convertible**\
 A metafunction that always yields void, used for detecting valid types.  template\<template\< typename... \> class \_Op, typename... \_Args\> constexpr bool **is\_detected\_v**\
 A metafunction that always yields void, used for detecting valid types.  template\<typename \_Expected, template\< typename... \> class \_Op, typename... \_Args\> constexpr bool **is\_detected\_exact\_v**\
 A metafunction that always yields void, used for detecting valid types.  template\<typename \_To, template\< typename... \> class \_Op, typename... \_Args\> constexpr bool **is\_detected\_convertible\_v**\
 A metafunction that always yields void, used for detecting valid types.

## Detailed Description

Namespace for features defined in ISO Technical Specifications.

## Function Documentation

### template\<typename \_Mn, typename \_Nn\> common\_type\_t\< \_Mn, \_Nn \> std::experimental::fundamentals\_v2::gcd (\_Mn \_\_m, \_Nn \_\_n) \[constexpr\], \[noexcept\]

Greatest common divisor.

### template\<typename \_Del, typename \_Tp\> \_Del \* std::experimental::fundamentals\_v2::get\_deleter (const shared\_ptr\< \_Tp \> & \_\_p) \[inline\], \[noexcept\]

C++14 20.8.2.2.10.

### template\<typename \_Mn, typename \_Nn\> common\_type\_t\< \_Mn, \_Nn \> std::experimental::fundamentals\_v2::lcm (\_Mn \_\_m, \_Nn \_\_n) \[constexpr\]

Least common multiple.

### template\<typename \_RAIter, typename \_Hash = std::hash\<typename std::iterator\_traits\<\_RAIter\>::value\_type\>, typename \_BinaryPredicate = equal\_to\<\>\> boyer\_moore\_horspool\_searcher\< \_RAIter, \_Hash, \_BinaryPredicate \> std::experimental::fundamentals\_v1::make\_boyer\_moore\_horspool\_searcher (\_RAIter \_\_pat\_first, \_RAIter \_\_pat\_last, \_Hash \_\_hf = \_Hash(), \_BinaryPredicate \_\_pred = \_BinaryPredicate()) \[inline\]

Generator function for boyer\_moore\_horspool\_searcher.

References **std::move()**.

### template\<typename \_RAIter, typename \_Hash = std::hash\<typename std::iterator\_traits\<\_RAIter\>::value\_type\>, typename \_BinaryPredicate = equal\_to\<\>\> boyer\_moore\_searcher\< \_RAIter, \_Hash, \_BinaryPredicate \> std::experimental::fundamentals\_v1::make\_boyer\_moore\_searcher (\_RAIter \_\_pat\_first, \_RAIter \_\_pat\_last, \_Hash \_\_hf = \_Hash(), \_BinaryPredicate \_\_pred = \_BinaryPredicate()) \[inline\]

Generator function for boyer\_moore\_searcher.

References **std::move()**.

### template\<typename \_ForwardIterator, typename \_BinaryPredicate = std::equal\_to\<\>\> default\_searcher\< \_ForwardIterator, \_BinaryPredicate \> std::experimental::fundamentals\_v1::make\_default\_searcher (\_ForwardIterator \_\_pat\_first, \_ForwardIterator \_\_pat\_last, \_BinaryPredicate \_\_pred = \_BinaryPredicate()) \[inline\]

Generator function for default\_searcher.

### template\<typename \_CharT, typename \_Traits, typename \_DelimT\> ostream\_joiner\< decay\_t\< \_DelimT \>, \_CharT, \_Traits \> std::experimental::fundamentals\_v2::make\_ostream\_joiner (basic\_ostream\< \_CharT, \_Traits \> & \_\_os, \_DelimT && \_\_delimiter) \[inline\]

Object generator for ostream\_joiner.

References **std::forward()**.

### template\<typename \_Fn\> auto std::experimental::fundamentals\_v2::not\_fn (\_Fn && \_\_fn) \[inline\], \[noexcept\]

\[func.not\_fn\] Function template not\_fn

References **std::forward()**.

### template\<typename \_PopulationIterator, typename \_SampleIterator, typename \_Distance, typename \_UniformRandomNumberGenerator\> \_SampleIterator std::experimental::fundamentals\_v2::sample (\_PopulationIterator \_\_first, \_PopulationIterator \_\_last, \_SampleIterator \_\_out, \_Distance \_\_n, \_UniformRandomNumberGenerator && \_\_g)

Take a random sample from a population.

References **std::forward()**.

## Variable Documentation

### template\<typename \_Tp\> bool std::experimental::fundamentals\_v1::is\_bind\_expression\_v \[constexpr\]

Variable template for std::is\_bind\_expression.

### template\<typename \_Tp\> int std::experimental::fundamentals\_v1::is\_placeholder\_v \[constexpr\]

Variable template for std::is\_placeholder.

## Author

Generated automatically by Doxygen for libstdc++ from the source code.
