31#if __cplusplus >= 202002L
42 template<
typename,
typename>
45 template<
typename _Bi_iter,
typename _Alloc>
54 template<
typename _BiIter,
typename _Alloc,
55 typename _CharT,
typename _TraitsT>
64 template<
typename,
typename,
typename>
67 template<
typename _Tp>
70 template<
typename _Tp>
73 template<
typename _Tp,
typename _Cont>
98 template<
typename _Ch_type>
116 unsigned char __extended = 0)
147 {
return *
this = (*this) & __other; }
151 {
return *
this = (*this) | __other; }
155 {
return *
this = (*this) ^ __other; }
165#if __cpp_impl_three_way_comparison < 201907L
168 {
return !((*this) == __other); }
220 return __fctyp.tolower(__c);
243 template<
typename _Fwd_iter>
250 return __fclt.transform(__s.
data(), __s.
data() + __s.
size());
267 template<
typename _Fwd_iter>
284 const auto __pend = __p + __s.
size();
290 __fctyp.tolower(__p, __pend);
294 __ret = __fclt.transform(__p, __pend);
314 template<
typename _Fwd_iter>
355 template<
typename _Fwd_iter>
358 bool __icase =
false)
const;
439 template<
typename _Ch_type,
typename _Rx_traits = regex_traits<_Ch_type>>
444 "regex traits class must have the same char_type");
468#if __cplusplus >= 201703L || !defined __STRICT_ANSI__
495 {
_M_compile(__p, __p + _Rx_traits::length(__p), __f); }
539 template<
typename _Ch_traits,
typename _Ch_alloc>
544 {
_M_compile(__s.data(), __s.data() + __s.size(), __f); }
559 template<
typename _FwdIter>
562 { this->
assign(__first, __last, __f); }
602 {
return this->
assign(__p); }
614 {
return this->
assign(__l); }
622 template<
typename _Ch_traits,
typename _Alloc>
625 {
return this->
assign(__s); }
635 {
return *
this = __rhs; }
662 _M_compile(__p, __p + _Rx_traits::length(__p), __flags);
699 template<
typename _Ch_traits,
typename _Alloc>
721 template<
typename _InputIterator>
723 assign(_InputIterator __first, _InputIterator __last,
726#if __cpp_if_constexpr >= 201606L
729 && is_same_v<_ValT, value_type>)
732 if constexpr (is_pointer_v<_InputIterator>)
735 _M_compile(__first.base(), __last.base(), __flags);
836 template<
typename _Bp,
typename _Ap,
typename _Cp,
typename _Rp>
843 template<
typename,
typename,
typename>
851#if ! __cpp_inline_variables
852 template<
typename _Ch,
typename _Tr>
856 template<
typename _Ch,
typename _Tr>
860 template<
typename _Ch,
typename _Tr>
864 template<
typename _Ch,
typename _Tr>
868 template<
typename _Ch,
typename _Tr>
872 template<
typename _Ch,
typename _Tr>
876 template<
typename _Ch,
typename _Tr>
880 template<
typename _Ch,
typename _Tr>
884 template<
typename _Ch,
typename _Tr>
888 template<
typename _Ch,
typename _Tr>
893#if __cpp_deduction_guides >= 201606
894 template<
typename _ForwardIterator>
897 -> basic_regex<
typename iterator_traits<_ForwardIterator>::value_type>;
903#ifdef _GLIBCXX_USE_WCHAR_T
916 template<
typename _Ch_type,
typename _Rx_traits>
920 { __lhs.swap(__rhs); }
941 template<
typename _BiIter>
1017 {
return this->
_M_str().compare(__s); }
1021 {
return this->
_M_str().compare(__s); }
1027 _M_compare(
const value_type* __s,
size_t __n)
const
1028 {
return this->
_M_str().compare({__s, __n}); }
1062 if (
int __ret = traits_type::compare(
_M_data, __s._M_data, __n))
1066 if (__diff > __limits::__max)
1067 return __limits::__max;
1068 if (__diff < __limits::__min)
1069 return __limits::__min;
1070 return static_cast<int>(__diff);
1079 template<
typename _Iter = _BiIter>
1085 if (
size_t __len = this->second - this->
first)
1091 template<
typename _Iter = _BiIter>
1105#ifdef _GLIBCXX_USE_WCHAR_T
1123 template<
typename _BiIter>
1126 {
return __lhs.
compare(__rhs) == 0; }
1128#if __cpp_lib_three_way_comparison
1136 template<
typename _BiIter>
1152 template<
typename _BiIter>
1155 {
return __lhs.
compare(__rhs) != 0; }
1163 template<
typename _BiIter>
1165 operator<(
const sub_match<_BiIter>& __lhs,
const sub_match<_BiIter>& __rhs)
1166 {
return __lhs.compare(__rhs) < 0; }
1174 template<
typename _BiIter>
1177 {
return __lhs.compare(__rhs) <= 0; }
1185 template<
typename _BiIter>
1188 {
return __lhs.compare(__rhs) >= 0; }
1196 template<
typename _BiIter>
1199 {
return __lhs.compare(__rhs) > 0; }
1205 template<
typename _Bi_iter,
typename _Ch_traits,
typename _Ch_alloc>
1208 _Ch_traits, _Ch_alloc>;
1211#if ! __cpp_lib_three_way_comparison
1219 template<
typename _Bi_iter,
typename _Ch_traits,
typename _Ch_alloc>
1221 operator==(
const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __lhs,
1223 {
return __rhs._M_compare(__lhs.data(), __lhs.size()) == 0; }
1232 template<
typename _Bi_iter,
typename _Ch_traits,
typename _Ch_alloc>
1234 operator!=(
const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __lhs,
1236 {
return !(__lhs == __rhs); }
1244 template<
typename _Bi_iter,
typename _Ch_traits,
typename _Ch_alloc>
1246 operator<(
const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __lhs,
1248 {
return __rhs._M_compare(__lhs.data(), __lhs.size()) > 0; }
1256 template<
typename _Bi_iter,
typename _Ch_traits,
typename _Ch_alloc>
1258 operator>(
const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __lhs,
1260 {
return __rhs < __lhs; }
1268 template<
typename _Bi_iter,
typename _Ch_traits,
typename _Ch_alloc>
1270 operator>=(
const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __lhs,
1272 {
return !(__lhs < __rhs); }
1280 template<
typename _Bi_iter,
typename _Ch_traits,
typename _Ch_alloc>
1282 operator<=(
const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __lhs,
1284 {
return !(__rhs < __lhs); }
1294 template<
typename _Bi_iter,
typename _Ch_traits,
typename _Ch_alloc>
1297 const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __rhs)
1298 {
return __lhs._M_compare(__rhs.data(), __rhs.size()) == 0; }
1300#if __cpp_lib_three_way_comparison
1308 template<
typename _Bi_iter,
typename _Ch_traits,
typename _Alloc>
1311 const __sub_match_string<_Bi_iter, _Ch_traits, _Alloc>& __rhs)
1315 __lhs._M_compare(__rhs.data(), __rhs.size()));
1325 template<
typename _Bi_iter,
typename _Ch_traits,
typename _Ch_alloc>
1328 const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __rhs)
1329 {
return !(__lhs == __rhs); }
1337 template<
typename _Bi_iter,
typename _Ch_traits,
typename _Ch_alloc>
1339 operator<(
const sub_match<_Bi_iter>& __lhs,
1340 const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __rhs)
1341 {
return __lhs._M_compare(__rhs.data(), __rhs.size()) < 0; }
1349 template<
typename _Bi_iter,
typename _Ch_traits,
typename _Ch_alloc>
1352 const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __rhs)
1353 {
return __rhs < __lhs; }
1361 template<
typename _Bi_iter,
typename _Ch_traits,
typename _Ch_alloc>
1364 const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __rhs)
1365 {
return !(__lhs < __rhs); }
1373 template<
typename _Bi_iter,
typename _Ch_traits,
typename _Ch_alloc>
1376 const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __rhs)
1377 {
return !(__rhs < __lhs); }
1386 template<
typename _Bi_iter>
1390 {
return __rhs.compare(__lhs) == 0; }
1399 template<
typename _Bi_iter>
1403 {
return !(__lhs == __rhs); }
1411 template<
typename _Bi_iter>
1415 {
return __rhs.compare(__lhs) > 0; }
1423 template<
typename _Bi_iter>
1427 {
return __rhs < __lhs; }
1435 template<
typename _Bi_iter>
1439 {
return !(__lhs < __rhs); }
1447 template<
typename _Bi_iter>
1451 {
return !(__rhs < __lhs); }
1461 template<
typename _Bi_iter>
1465 {
return __lhs.
compare(__rhs) == 0; }
1467#if __cpp_lib_three_way_comparison
1476 template<
typename _Bi_iter>
1493 template<
typename _Bi_iter>
1497 {
return !(__lhs == __rhs); }
1505 template<
typename _Bi_iter>
1507 operator<(
const sub_match<_Bi_iter>& __lhs,
1508 typename iterator_traits<_Bi_iter>::value_type
const* __rhs)
1509 {
return __lhs.compare(__rhs) < 0; }
1517 template<
typename _Bi_iter>
1521 {
return __rhs < __lhs; }
1529 template<
typename _Bi_iter>
1533 {
return !(__lhs < __rhs); }
1541 template<
typename _Bi_iter>
1545 {
return !(__rhs < __lhs); }
1554 template<
typename _Bi_iter>
1567 template<
typename _Bi_iter>
1571 {
return !(__lhs == __rhs); }
1580 template<
typename _Bi_iter>
1593 template<
typename _Bi_iter>
1597 {
return __rhs < __lhs; }
1606 template<
typename _Bi_iter>
1610 {
return !(__lhs < __rhs); }
1619 template<
typename _Bi_iter>
1623 {
return !(__rhs < __lhs); }
1633 template<
typename _Bi_iter>
1639#if __cpp_lib_three_way_comparison
1649 template<
typename _Bi_iter>
1667 template<
typename _Bi_iter>
1671 {
return !(__lhs == __rhs); }
1680 template<
typename _Bi_iter>
1682 operator<(
const sub_match<_Bi_iter>& __lhs,
1683 typename iterator_traits<_Bi_iter>::value_type
const& __rhs)
1693 template<
typename _Bi_iter>
1697 {
return __rhs < __lhs; }
1706 template<
typename _Bi_iter>
1710 {
return !(__lhs < __rhs); }
1719 template<
typename _Bi_iter>
1723 {
return !(__rhs < __lhs); }
1734 template<
typename _Ch_type,
typename _Ch_traits,
typename _Bi_iter>
1739 {
return __os << __m.str(); }
1768 template<
typename _Bi_iter,
1771 :
private std::vector<sub_match<_Bi_iter>, _Alloc>
1792 typedef _GLIBCXX_STD_C::vector<sub_match<_Bi_iter>, _Alloc>
_Unchecked;
1929 {
return (*
this)[__sub].length(); }
1974 return __sub <
size()
1976 : _M_unmatched_sub();
1991 return !
empty() ? _M_prefix() : _M_unmatched_sub();
2006 return !
empty() ? _M_suffix() : _M_unmatched_sub();
2021 {
return this->
begin(); }
2035 {
return this->
end(); }
2052 template<
typename _Out_iter>
2061 template<
typename _Out_iter,
typename _St,
typename _Sa>
2073 template<
typename _St,
typename _Sa>
2127 swap(_M_begin, __that._M_begin);
2132 template<
typename,
typename,
typename>
2137 template<
typename,
typename,
typename>
2140 template<
typename _Bp,
typename _Ap,
typename _Cp,
typename _Rp>
2150 _M_resize(
unsigned int __size)
2155 _M_establish_failed_match(_Bi_iter __end)
2157 sub_match<_Bi_iter> __sm;
2158 __sm.first = __sm.second = __end;
2163 _M_unmatched_sub()
const
2166 sub_match<_Bi_iter>&
2174 sub_match<_Bi_iter>&
2182 sub_match<_Bi_iter>&
2186 _Bi_iter _M_begin {};
2192#ifdef _GLIBCXX_USE_WCHAR_T
2206 template<
typename _Bi_iter,
typename _Alloc>
2225#if ! __cpp_lib_three_way_comparison
2233 template<
typename _Bi_iter,
class _Alloc>
2237 {
return !(__m1 == __m2); }
2250 template<
typename _Bi_iter,
typename _Alloc>
2254 { __lhs.swap(__rhs); }
2280 template<
typename _Bi_iter,
typename _Alloc,
2281 typename _Ch_type,
typename _Rx_traits>
2308 template<
typename _Bi_iter,
typename _Ch_type,
typename _Rx_traits>
2316 return regex_match(__first, __last, __what, __re, __flags);
2333 template<
typename _Ch_type,
typename _Alloc,
typename _Rx_traits>
2340 {
return regex_match(__s, __s + _Rx_traits::length(__s), __m, __re, __f); }
2356 template<
typename _Ch_traits,
typename _Ch_alloc,
2357 typename _Alloc,
typename _Ch_type,
typename _Rx_traits>
2361 _Ch_traits, _Ch_alloc>::const_iterator, _Alloc>& __m,
2370 template<
typename _Ch_traits,
typename _Ch_alloc,
2371 typename _Alloc,
typename _Ch_type,
typename _Rx_traits>
2375 _Ch_traits, _Ch_alloc>::const_iterator, _Alloc>&,
2393 template<
typename _Ch_type,
class _Rx_traits>
2399 {
return regex_match(__s, __s + _Rx_traits::length(__s), __re, __f); }
2414 template<
typename _Ch_traits,
typename _Str_allocator,
2415 typename _Ch_type,
typename _Rx_traits>
2437 template<
typename _Bi_iter,
typename _Alloc,
2438 typename _Ch_type,
typename _Rx_traits>
2461 template<
typename _Bi_iter,
typename _Ch_type,
typename _Rx_traits>
2469 return regex_search(__first, __last, __what, __re, __flags);
2484 template<
typename _Ch_type,
class _Alloc,
class _Rx_traits>
2491 {
return regex_search(__s, __s + _Rx_traits::length(__s), __m, __e, __f); }
2503 template<
typename _Ch_type,
typename _Rx_traits>
2509 {
return regex_search(__s, __s + _Rx_traits::length(__s), __e, __f); }
2521 template<
typename _Ch_traits,
typename _String_allocator,
2522 typename _Ch_type,
typename _Rx_traits>
2525 _String_allocator>& __s,
2529 {
return regex_search(__s.begin(), __s.end(), __e, __flags); }
2543 template<
typename _Ch_traits,
typename _Ch_alloc,
2544 typename _Alloc,
typename _Ch_type,
2545 typename _Rx_traits>
2549 _Ch_traits, _Ch_alloc>::const_iterator, _Alloc>& __m,
2558 template<
typename _Ch_traits,
typename _Ch_alloc,
2559 typename _Alloc,
typename _Ch_type,
2560 typename _Rx_traits>
2564 _Ch_traits, _Ch_alloc>::const_iterator, _Alloc>&,
2572 template<
typename _Out_iter,
typename _Bi_iter,
2573 typename _Rx_traits,
typename _Ch_type>
2577 const _Ch_type* __fmt,
size_t __len,
2594 template<
typename _Out_iter,
typename _Bi_iter,
2595 typename _Rx_traits,
typename _Ch_type,
2596 typename _St,
typename _Sa>
2605 __fmt.
length(), __flags);
2621 template<
typename _Out_iter,
typename _Bi_iter,
2622 typename _Rx_traits,
typename _Ch_type>
2626 const _Ch_type* __fmt,
2647 template<
typename _Rx_traits,
typename _Ch_type,
2648 typename _St,
typename _Sa,
typename _Fst,
typename _Fsa>
2649 inline basic_string<_Ch_type, _St, _Sa>
2658 __s.
begin(), __s.
end(), __e, __fmt, __flags);
2673 template<
typename _Rx_traits,
typename _Ch_type,
2674 typename _St,
typename _Sa>
2675 inline basic_string<_Ch_type, _St, _Sa>
2678 const _Ch_type* __fmt,
2684 __s.
begin(), __s.
end(), __e, __fmt, __flags);
2699 template<
typename _Rx_traits,
typename _Ch_type,
2700 typename _St,
typename _Sa>
2701 inline basic_string<_Ch_type>
2711 __e, __fmt, __flags);
2726 template<
typename _Rx_traits,
typename _Ch_type>
2727 inline basic_string<_Ch_type>
2730 const _Ch_type* __fmt,
2737 __e, __fmt, __flags);
2753 template<
typename _Bi_iter,
2754 typename _Ch_type =
typename iterator_traits<_Bi_iter>::value_type,
2755 typename _Rx_traits = regex_traits<_Ch_type> >
2765#if __cplusplus > 201703L
2812#if __cplusplus >= 202002L
2819#if __cpp_impl_three_way_comparison < 201907L
2825 {
return !(*
this == __rhs); }
2869#ifdef _GLIBCXX_USE_WCHAR_T
2885 template<
typename _Bi_iter,
2897#if __cplusplus > 201703L
2981 template<std::
size_t _Nm>
2984 const int (&__submatches)[_Nm],
2988 _M_subs(__submatches, __submatches + _Nm),
_M_n(0)
3004 template <std::
size_t _Nm>
3032#if __cplusplus >= 202002L
3039#if __cpp_impl_three_way_comparison < 201907L
3045 {
return !(*
this == __rhs); }
3089 return (*_M_position).prefix();
3126#ifdef _GLIBCXX_USE_WCHAR_T
#define _GLIBCXX_BEGIN_NAMESPACE_CXX11
#define _GLIBCXX_VISIBILITY(V)
#define __glibcxx_assert(cond)
#define _GLIBCXX_NODISCARD
#define _GLIBCXX_END_NAMESPACE_VERSION
#define _GLIBCXX_END_NAMESPACE_CXX11
#define _GLIBCXX_DOXYGEN_ONLY(X)
#define _GLIBCXX_BEGIN_NAMESPACE_VERSION
#define __glibcxx_requires_string_len(_String, _Len)
#define __glibcxx_requires_valid_range(_First, _Last)
basic_ostream< char > ostream
Base class for char output streams.
__bool_constant< true > true_type
The type used as a compile-time boolean with true value.
__bool_constant< false > false_type
The type used as a compile-time boolean with false value.
typename enable_if< _Cond, _Tp >::type __enable_if_t
constexpr std::remove_reference< _Tp >::type && move(_Tp &&__t) noexcept
Convert a value to an rvalue.
constexpr _Tp * __addressof(_Tp &__r) noexcept
Same as C++11 std::addressof.
constexpr const _Tp & min(const _Tp &, const _Tp &)
This does what you think it does.
const _Facet & use_facet(const locale &__loc)
Return a facet.
sub_match< wstring::const_iterator > wssub_match
Regex submatch over a standard wide string.
auto operator<=>(const sub_match< const char * > &__lhs, const sub_match< const char * > &__rhs) noexcept(__detail::__is_contiguous_iter< const char * >::value)
sub_match< string::const_iterator > ssub_match
Standard regex submatch over a standard string.
sub_match< const char * > csub_match
Standard regex submatch over a C-style null-terminated string.
regex_token_iterator< const char * > cregex_token_iterator
Token iterator for C-style NULL-terminated strings.
bool operator==(const sub_match< _Bi_iter > &__lhs, const __sub_match_string< _Bi_iter, _Ch_traits, _Ch_alloc > &__rhs)
Tests the equivalence of a regular expression submatch and a string.
regex_iterator< wstring::const_iterator > wsregex_iterator
regex_token_iterator< wstring::const_iterator > wsregex_token_iterator
Token iterator for standard wide-character strings.
bool operator==(const sub_match< _Bi_iter > &__lhs, typename iterator_traits< _Bi_iter >::value_type const &__rhs)
Tests the equivalence of a regular expression submatch and a character.
bool operator==(const sub_match< _Bi_iter > &__lhs, typename iterator_traits< _Bi_iter >::value_type const *__rhs)
Tests the equivalence of a regular expression submatch and a C string.
regex_token_iterator< const wchar_t * > wcregex_token_iterator
Token iterator for C-style NULL-terminated wide strings.
void swap(basic_regex< _Ch_type, _Rx_traits > &__lhs, basic_regex< _Ch_type, _Rx_traits > &__rhs) noexcept
Swaps the contents of two regular expression objects.
regex_iterator< string::const_iterator > sregex_iterator
regex_iterator< const wchar_t * > wcregex_iterator
basic_regex< char > regex
Standard regular expressions.
match_results< const wchar_t * > wcmatch
_Out_iter regex_replace(_Out_iter __out, _Bi_iter __first, _Bi_iter __last, const basic_regex< _Ch_type, _Rx_traits > &__e, const basic_string< _Ch_type, _St, _Sa > &__fmt, regex_constants::match_flag_type __flags=regex_constants::match_default)
Search for a regular expression within a range for multiple times, and replace the matched parts thro...
sub_match< const wchar_t * > wcsub_match
Regex submatch over a C-style null-terminated wide string.
match_results< string::const_iterator > smatch
regex_token_iterator< string::const_iterator > sregex_token_iterator
Token iterator for standard strings.
bool regex_match(_Bi_iter __s, _Bi_iter __e, match_results< _Bi_iter, _Alloc > &__m, const basic_regex< _Ch_type, _Rx_traits > &__re, regex_constants::match_flag_type __flags=regex_constants::match_default)
Determines if there is a match between the regular expression e and all of the character sequence [fi...
match_results< const char * > cmatch
bool operator==(const match_results< _BidirectionalIterator, polymorphic_allocator< sub_match< _BidirectionalIterator > > > &__m1, const match_results< _BidirectionalIterator, polymorphic_allocator< sub_match< _BidirectionalIterator > > > &__m2)
bool regex_search(_Bi_iter __s, _Bi_iter __e, match_results< _Bi_iter, _Alloc > &__m, const basic_regex< _Ch_type, _Rx_traits > &__re, regex_constants::match_flag_type __flags=regex_constants::match_default)
regex_iterator< const char * > cregex_iterator
void swap(match_results< _BidirectionalIterator, polymorphic_allocator< sub_match< _BidirectionalIterator > > > &__lhs, match_results< _BidirectionalIterator, polymorphic_allocator< sub_match< _BidirectionalIterator > > > &__rhs) noexcept
match_results< wstring::const_iterator > wsmatch
basic_regex< wchar_t > wregex
Standard wide-character regular expressions.
bool operator==(const sub_match< _BiIter > &__lhs, const sub_match< _BiIter > &__rhs)
Tests the equivalence of two regular expression submatches.
constexpr bool operator>(const reverse_iterator< _IteratorL > &__x, const reverse_iterator< _IteratorR > &__y)
constexpr bool operator<(const reverse_iterator< _IteratorL > &__x, const reverse_iterator< _IteratorR > &__y)
constexpr bool operator<=(const reverse_iterator< _IteratorL > &__x, const reverse_iterator< _IteratorR > &__y)
constexpr bool operator>=(const reverse_iterator< _IteratorL > &__x, const reverse_iterator< _IteratorR > &__y)
constexpr back_insert_iterator< _Container > back_inserter(_Container &__x)
_Out_iter __regex_replace(_Out_iter __out, _Bi_iter __first, _Bi_iter __last, const basic_regex< _Ch_type, _Rx_traits > &__e, const _Ch_type *__fmt, size_t __len, regex_constants::match_flag_type __flags)
__PTRDIFF_TYPE__ ptrdiff_t
constexpr iterator_traits< _InputIterator >::difference_type distance(_InputIterator __first, _InputIterator __last)
A generalization of pointer arithmetic.
bool operator!=(const fpos< _StateT > &__lhs, const fpos< _StateT > &__rhs)
constexpr bool operator==(const array< _Tp, _Nm > &__one, const array< _Tp, _Nm > &__two)
constexpr bool equal(_IIter1, _IIter1, _IIter2)
constexpr __enable_if_t< __array_traits< _Tp, _Nm >::_Is_swappable::value > swap(array< _Tp, _Nm > &__one, array< _Tp, _Nm > &__two) noexcept(noexcept(__one.swap(__two)))
std::basic_ostream< _CharT, _Traits > & operator<<(std::basic_ostream< _CharT, _Traits > &__os, const bitset< _Nb > &__x)
Global I/O operators for bitsets.
ISO C++ entities toplevel namespace is std.
constexpr auto __char_traits_cmp_cat(int __cmp) noexcept
bool __regex_algo_impl(_BiIter __s, _BiIter __e, match_results< _BiIter, _Alloc > &__m, const basic_regex< _CharT, _TraitsT > &__re, regex_constants::match_flag_type __flags, _RegexExecutorPolicy __policy, bool __match_mode)
Implementation details not part of the namespace std interface.
__numeric_traits_integer< _Tp > __int_traits
Convenience alias for __numeric_traits<integer-type>.
GNU extensions for public use.
constexpr syntax_option_type collate
constexpr syntax_option_type ECMAScript
constexpr syntax_option_type egrep
syntax_option_type
This is a bitmask type indicating how to interpret the regex.
constexpr syntax_option_type multiline
constexpr match_flag_type match_default
constexpr syntax_option_type awk
constexpr syntax_option_type extended
constexpr syntax_option_type basic
match_flag_type
This is a bitmask type indicating regex matching rules.
constexpr syntax_option_type icase
constexpr syntax_option_type optimize
constexpr syntax_option_type nosubs
constexpr syntax_option_type grep
constexpr const_iterator end() const noexcept
constexpr const_iterator begin() const noexcept
Template class basic_ostream.
typename _Size< _Alloc, difference_type >::type size_type
The allocator's size type.
The standard allocator, as per C++03 [20.4.1].
constexpr const _CharT * c_str() const noexcept
Return const pointer to null-terminated contents.
constexpr size_type size() const noexcept
Returns the number of characters in the string, not including any null-termination.
constexpr const _CharT * data() const noexcept
Return const pointer to contents.
constexpr size_type length() const noexcept
constexpr iterator end() noexcept
constexpr iterator begin() noexcept
Managing sequences of characters and character-like objects.
static constexpr std::size_t length(const char_type *__s)
Basis for explicit traits specializations.
Base class for all library exceptions.
Traits class for iterators.
Container class for localization functionality.
Primary class template ctype facet.
static constexpr flag_type extended
basic_regex & assign(const _Ch_type *__p, flag_type __flags=ECMAScript)
Assigns a new regular expression to a regex object from a C-style null-terminated string containing a...
basic_regex & assign(const _Ch_type *__p, size_t __len, flag_type __flags=ECMAScript)
Assigns a new regular expression to a regex object from a C-style string containing a regular express...
locale_type getloc() const noexcept
Gets the locale currently imbued in the regular expression object.
void _M_compile(const _Ch_type *__first, const _Ch_type *__last, flag_type __f)
static constexpr flag_type icase
static constexpr flag_type ECMAScript
unsigned int mark_count() const noexcept
Gets the number of marked subexpressions within the regular expression.
basic_regex & assign(_InputIterator __first, _InputIterator __last, flag_type __flags=ECMAScript)
Assigns a new regular expression to a regex object.
static constexpr flag_type multiline
static constexpr flag_type basic
locale_type imbue(locale_type __loc)
Imbues the regular expression object with the given locale.
traits_type::string_type string_type
basic_regex(const basic_regex &__rhs)=default
Copy-constructs a basic regular expression.
basic_regex & assign(initializer_list< _Ch_type > __l, flag_type __flags=ECMAScript)
Assigns a new regular expression to a regex object.
static constexpr flag_type collate
basic_regex & assign(basic_regex &&__rhs) noexcept
Move-assigns one regular expression to another.
static constexpr flag_type grep
regex_constants::syntax_option_type flag_type
flag_type flags() const noexcept
Gets the flags used to construct the regular expression or in the last call to assign().
traits_type::locale_type locale_type
static constexpr flag_type optimize
basic_regex & operator=(basic_regex &&)=default
Move-assigns one regular expression to another.
basic_regex(const _Ch_type *__p, flag_type __f=ECMAScript)
Constructs a basic regular expression from the sequence [__p, __p + char_traits<_Ch_type>::length(__p...
void swap(basic_regex &__rhs) noexcept
Swaps the contents of two regular expression objects.
basic_regex(const std::basic_string< _Ch_type, _Ch_traits, _Ch_alloc > &__s, flag_type __f=ECMAScript)
Constructs a basic regular expression from the string s interpreted according to the flags in f.
std::shared_ptr< const __detail::_NFA< _Rx_traits > > _AutomatonPtr
static constexpr flag_type awk
basic_regex(_FwdIter __first, _FwdIter __last, flag_type __f=ECMAScript)
Constructs a basic regular expression from the range [first, last) interpreted according to the flags...
basic_regex & operator=(const basic_regex &)=default
Assigns one regular expression to another.
basic_regex(const _Ch_type *__p, std::size_t __len, flag_type __f=ECMAScript)
Constructs a basic regular expression from the sequence [p, p + len) interpreted according to the fla...
basic_regex & operator=(initializer_list< _Ch_type > __l)
Replaces a regular expression with a new one constructed from an initializer list.
static constexpr flag_type egrep
basic_regex & assign(const basic_string< _Ch_type, _Ch_traits, _Alloc > &__s, flag_type __flags=ECMAScript)
Assigns a new regular expression to a regex object from a string containing a regular expression patt...
basic_regex(basic_regex &&__rhs) noexcept=default
Move-constructs a basic regular expression.
basic_regex(initializer_list< _Ch_type > __l, flag_type __f=ECMAScript)
Constructs a basic regular expression from an initializer list.
basic_regex & operator=(const _Ch_type *__p)
Replaces a regular expression with a new one constructed from a C-style null-terminated string.
basic_regex & assign(const basic_regex &__rhs) noexcept
Assigns one regular expression to another.
_AutomatonPtr _M_automaton
basic_regex & operator=(const basic_string< _Ch_type, _Ch_traits, _Alloc > &__s)
Replaces a regular expression with a new one constructed from a string.
~basic_regex()
Destroys a basic regular expression.
static constexpr flag_type nosubs
allocator_type get_allocator() const noexcept
void swap(match_results &__that) noexcept
std::iterator_traits< _BidirectionalIterator > __iter_traits
difference_type position(size_type __sub=0) const
size_type size() const noexcept
_Base_type::const_iterator const_iterator
__iter_traits::difference_type difference_type
polymorphic_allocator< sub_match< _BidirectionalIterator > > allocator_type
regex_constants::match_flag_type match_flag_type
_Out_iter format(_Out_iter __out, const char_type *__fmt_first, const char_type *__fmt_last, match_flag_type __flags=regex_constants::format_default) const
difference_type length(size_type __sub=0) const
const_reference prefix() const
match_results(match_results &&__m, const polymorphic_allocator< sub_match< _BidirectionalIterator > > &__a) noexcept(noexcept(_Base_type(std::move(__m), __a)))
size_type max_size() const noexcept
basic_string< char_type, _St, _Sa > format(const basic_string< char_type, _St, _Sa > &__fmt, match_flag_type __flags=regex_constants::format_default) const
const_reference operator[](size_type __sub) const
match_results(match_results &&) noexcept=default
match_results(const polymorphic_allocator< sub_match< _BidirectionalIterator > > &__a) noexcept
match_results(const match_results &)=default
_Out_iter format(_Out_iter __out, const basic_string< char_type, _St, _Sa > &__fmt, match_flag_type __flags=regex_constants::format_default) const
const_iterator cbegin() const noexcept
friend class regex_iterator
std::basic_string< char_type > string_type
string_type str(size_type __sub=0) const
const_iterator end() const noexcept
::vector< sub_match< _BidirectionalIterator >, polymorphic_allocator< sub_match< _BidirectionalIterator > > > _Unchecked
const value_type & const_reference
const_reference suffix() const
sub_match< _BidirectionalIterator > value_type
bool ready() const noexcept
bool empty() const noexcept
string_type format(const char_type *__fmt, match_flag_type __flags=regex_constants::format_default) const
match_results()
Constructs a default match_results container.
const_iterator cend() const noexcept
allocator_traits< polymorphic_allocator< sub_match< _BidirectionalIterator > > >::size_type size_type
__iter_traits::value_type char_type
const_iterator begin() const noexcept
std::vector< sub_match< _BidirectionalIterator >, polymorphic_allocator< sub_match< _BidirectionalIterator > > > _Base_type
The results of a match or search operation.
Takes a regex and an input string and does the matching.
char_type translate(char_type __c) const
Performs the identity translation.
static std::size_t length(const char_type *__p)
Gives the length of a C-style string starting at __p.
string_type transform_primary(_Fwd_iter __first, _Fwd_iter __last) const
Gets a sort key for a character sequence, independent of case.
regex_traits()
Constructs a default traits object.
int value(_Ch_type __ch, int __radix) const
Converts a digit to an int.
std::basic_string< char_type > string_type
char_type translate_nocase(char_type __c) const
Translates a character into a case-insensitive equivalent.
string_type lookup_collatename(_Fwd_iter __first, _Fwd_iter __last) const
Gets a collation element by name.
_RegexMask char_class_type
locale_type getloc() const
Gets a copy of the current locale in use by the regex_traits object.
bool isctype(_Ch_type __c, char_class_type __f) const
Determines if c is a member of an identified class.
locale_type imbue(locale_type __loc)
Imbues the regex_traits object with a copy of a new locale.
char_class_type lookup_classname(_Fwd_iter __first, _Fwd_iter __last, bool __icase=false) const
Maps one or more characters to a named character classification.
string_type transform(_Fwd_iter __first, _Fwd_iter __last) const
Gets a sort key for a character sequence.
Describes aspects of a regular expression.
constexpr bool operator==(_RegexMask __other) const
constexpr _RegexMask operator&(_RegexMask __other) const
constexpr _RegexMask operator^(_RegexMask __other) const
_RegexMask & operator|=(_RegexMask __other)
std::ctype_base::mask _BaseType
constexpr _RegexMask(_BaseType __base=0, unsigned char __extended=0)
_RegexMask & operator^=(_RegexMask __other)
constexpr _RegexMask operator|(_RegexMask __other) const
unsigned char _M_extended
constexpr _RegexMask operator~() const
static constexpr unsigned char _S_under
_RegexMask & operator&=(_RegexMask __other)
static constexpr unsigned char _S_valid_mask
iterator_traits< _BiIter > __iter_traits
__iter_traits::value_type value_type
basic_string< value_type > string_type
difference_type length() const noexcept
Gets the length of the matching sequence.
__enable_if_t<!__detail::__is_contiguous_iter< _Iter >::value, string_type > _M_str() const
__iter_traits::difference_type difference_type
__enable_if_t< __detail::__is_contiguous_iter< _Iter >::value, __string_view > _M_str() const noexcept
void swap(sub_match &__s) noexcept(__is_nothrow_swappable< _BiIter >::value)
Swap the values of two sub_match objects.
int compare(const value_type *__s) const
Compares this sub_match to a string.
string_type str() const
Gets the matching sequence as a string.
int compare(const sub_match &__s) const
Compares this and another matched sequence.
int compare(const string_type &__s) const
Compares this sub_match to a string.
constexpr sub_match() noexcept
__string_view(const value_type *__s, size_t __n) noexcept
typename string_type::traits_type traits_type
__string_view(const string_type &__s) noexcept
__string_view(const value_type *__s) noexcept
int compare(__string_view __s) const noexcept
const value_type * _M_data
std::forward_iterator_tag iterator_category
const value_type * pointer
const value_type * operator->() const noexcept
Selects a regex_iterator member.
regex_iterator operator++(int)
Postincrements a regex_iterator.
regex_iterator(_Bi_iter, _Bi_iter, const regex_type &&, regex_constants::match_flag_type=regex_constants::match_default)=delete
regex_iterator(_Bi_iter __a, _Bi_iter __b, const regex_type &__re, regex_constants::match_flag_type __m=regex_constants::match_default)
const value_type & reference
regex_iterator(const regex_iterator &)=default
Copy constructs a regex_iterator.
match_results< _Bi_iter > value_type
regex_iterator & operator=(const regex_iterator &)=default
Copy assigns one regex_iterator to another.
regex_iterator()=default
Provides a singular iterator, useful for indicating one-past-the-end of a range.
~regex_iterator()=default
const value_type & operator*() const noexcept
Dereferences a regex_iterator.
std::input_iterator_tag iterator_concept
match_results< const char * > _M_match
std::ptrdiff_t difference_type
bool operator==(default_sentinel_t) const noexcept
bool operator==(const regex_iterator &) const noexcept
Tests the equivalence of two regex iterators.
regex_constants::match_flag_type _M_flags
regex_iterator & operator++()
Increments a regex_iterator.
basic_regex< _Ch_type, _Rx_traits > regex_type
const regex_type * _M_pregex
regex_token_iterator(_Bi_iter __a, _Bi_iter __b, const regex_type &__re, const int(&__submatches)[_Nm], regex_constants::match_flag_type __m=regex_constants::match_default)
bool operator==(const regex_token_iterator &__rhs) const
Compares a regex_token_iterator to another for equality.
bool operator==(default_sentinel_t) const noexcept
const value_type * pointer
const value_type & _M_current_match() const
basic_regex< _Ch_type, _Rx_traits > regex_type
regex_token_iterator(_Bi_iter, _Bi_iter, const regex_type &&, initializer_list< int >, regex_constants::match_flag_type=regex_constants::match_default)=delete
void _M_init(_Bi_iter __a, _Bi_iter __b)
regex_token_iterator(const regex_token_iterator &__rhs)
Copy constructs a regex_token_iterator.
const value_type * _M_result
std::input_iterator_tag iterator_concept
regex_token_iterator(_Bi_iter __a, _Bi_iter __b, const regex_type &__re, const std::vector< int > &__submatches, regex_constants::match_flag_type __m=regex_constants::match_default)
regex_token_iterator(_Bi_iter __a, _Bi_iter __b, const regex_type &__re, initializer_list< int > __submatches, regex_constants::match_flag_type __m=regex_constants::match_default)
std::vector< int > _M_subs
const value_type & reference
regex_token_iterator operator++(int)
Postincrements a regex_token_iterator.
const value_type * operator->() const
Selects a regex_token_iterator member.
regex_token_iterator & operator=(const regex_token_iterator &__rhs)
Assigns a regex_token_iterator to another.
std::ptrdiff_t difference_type
regex_token_iterator & operator++()
Increments a regex_token_iterator.
std::forward_iterator_tag iterator_category
sub_match< _Bi_iter > value_type
regex_token_iterator()
Default constructs a regex_token_iterator.
regex_token_iterator(_Bi_iter, _Bi_iter, const regex_type &&, const std::vector< int > &, regex_constants::match_flag_type=regex_constants::match_default)=delete
constexpr bool _M_end_of_seq() const noexcept
regex_token_iterator(_Bi_iter, _Bi_iter, const regex_type &&, int=0, regex_constants::match_flag_type=regex_constants::match_default)=delete
regex_token_iterator(_Bi_iter, _Bi_iter, const regex_type &&, const int(&)[_Nm], regex_constants::match_flag_type=regex_constants::match_default)=delete
const value_type & operator*() const
Dereferences a regex_token_iterator.
regex_iterator< _Bi_iter, _Ch_type, _Rx_traits > _Position
regex_token_iterator(_Bi_iter __a, _Bi_iter __b, const regex_type &__re, int __submatch=0, regex_constants::match_flag_type __m=regex_constants::match_default)
void _M_normalize_result()
shared_ptr< const _RegexT > _M_get_nfa() noexcept
Builds an NFA from an input iterator range.
A smart pointer with reference-counted copy semantics.
constexpr void swap(pair &__p) noexcept(__and_< __is_nothrow_swappable< _T1 >, __is_nothrow_swappable< _T2 > >::value)
Swap the first members and then the second members.
Struct holding two objects of arbitrary type.
Forward iterators support a superset of input iterator operations.
constexpr iterator end() noexcept
constexpr iterator begin() noexcept
constexpr void assign(size_type __n, const value_type &__val)
constexpr void swap(vector &__x) noexcept
constexpr bool empty() const noexcept
constexpr allocator_type get_allocator() const noexcept
constexpr size_type size() const noexcept
__gnu_cxx::__normal_iterator< const_pointer, vector > const_iterator
constexpr reference operator[](size_type __n) noexcept
constexpr size_type max_size() const noexcept
A standard container which offers fixed time access to individual elements in any order.