---
name: "std::experimental"
section: "3cxx"
platform: "linux"
package: "libstdc++-12-doc"
version: "12.4.0-5"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/std::experimental/3cxx"
---

# std::experimental(3cxx)

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** = std::\_\_conditional\_t\< std::\_\_is\_byte\_like\< \_Val, **\_Pred** \>::value, \_\_boyer\_moore\_array\_base\< \_Diff, 256, **\_Pred** \>, \_\_boyer\_moore\_map\_base\< \_Val, \_Diff, **\_Hash**, **\_Pred** \> \>\
 **using** **erased\_type** = **std::\_\_erased\_type**\
 **using** **string\_view** = **basic\_string\_view**\< char \>\
 **using** **u16string\_view** = **basic\_string\_view**\< **char16\_t** \>\
 **using** **u32string\_view** = **basic\_string\_view**\< **char32\_t** \>\
 **using** **wstring\_view** = **basic\_string\_view**\< wchar\_t \>\

### 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 \> 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** \_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 \> 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 \> 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 \> 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 \> 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 \> 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 \> 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 \> 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 \> 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 \> **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** = **void**\
 A metafunction that always yields void, used for detecting valid types.  template\<**typename** **\_Default** , **template**\< typename... \> **class** \_Op, typename... \_Args\> **using** **detected\_or** = **std::\_\_detected\_or**\< **\_Default**, \_Op, \_Args... \>\
 A metafunction that always yields void, used for detecting valid types.  template\<**typename** **\_Default** , **template**\< typename... \> **class** \_Op, typename... \_Args\> **using** **detected\_or\_t** = **typename** detected\_or\< **\_Default**, \_Op, \_Args... \>::type\
 A metafunction that always yields void, used for detecting valid types.  template\<**template**\< typename... \> **class** \_Op, typename... \_Args\> **using** **detected\_t** = detected\_or\_t\< nonesuch, \_Op, \_Args... \>\
 A metafunction that always yields void, used for detecting valid types.  template\<**template**\< typename... \> **class** \_Op, typename... \_Args\> **using** **is\_detected** = **typename** detected\_or\< **void**, \_Op, \_Args... \>::\_\_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** = **is\_same**\< **\_Expected**, detected\_t\< \_Op, \_Args... \> \>\
 A metafunction that always yields void, used for detecting valid types.  template\<**typename** **\_To** , **template**\< typename... \> **class** \_Op, typename... \_Args\> **using** **is\_detected\_convertible** = **is\_convertible**\< detected\_t\< \_Op, \_Args... \>, **\_To** \>\
 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 \> constexpr 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 \> constexpr 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.

### 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.

### 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.

### 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.

## Variable Documentation

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

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

### template\<typename \_Tp \> constexpr 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.
