std::sub_match< _BiIter > Class Template Reference
Regular Expressions

`#include <regex.h>`

Inheritance diagram for std::sub_match< _BiIter >:
[legend]

## Public Types

typedef __iter_traits::difference_type | difference_type
typedef _BiIter | first_type
typedef _BiIter | iterator
typedef _BiIter | second_type
typedef basic_string< value_type > | string_type
typedef __iter_traits::value_type | value_type

## Public Member Functions

int | compare (const sub_match &__s) const
difference_type | length () const noexcept
| operator string_type () const
string_type | str () const
constexpr void | swap (pair &__p) noexcept(__and_< __is_nothrow_swappable< _BiIter >, __is_nothrow_swappable< _BiIter > >::value)
int | compare (const string_type &__s) const
int | compare (const value_type *__s) const

## Public Attributes

_BiIter | first
bool | matched
_BiIter | second

## Related Symbols

(Note that these are not member symbols.)
constexpr pair< typename __decay_and_strip< _BiIter >::__type, typename __decay_and_strip< _BiIter >::__type > | make_pair (_BiIter &&__x, _BiIter &&__y)
template<typename _BiIter >
bool | operator== (const sub_match< _BiIter > &__lhs, const sub_match< _BiIter > &__rhs)
template<typename _BiIter >
bool | operator!= (const sub_match< _BiIter > &__lhs, const sub_match< _BiIter > &__rhs)
template<typename _BiIter >
bool | operator< (const sub_match< _BiIter > &__lhs, const sub_match< _BiIter > &__rhs)
template<typename _BiIter >
bool | operator<= (const sub_match< _BiIter > &__lhs, const sub_match< _BiIter > &__rhs)
template<typename _BiIter >
bool | operator>= (const sub_match< _BiIter > &__lhs, const sub_match< _BiIter > &__rhs)
template<typename _BiIter >
bool | operator> (const sub_match< _BiIter > &__lhs, const sub_match< _BiIter > &__rhs)
template<typename _Bi_iter , typename _Ch_traits , typename _Ch_alloc >
bool | operator== (const __sub_match_string< _Bi_iter, _Ch_traits, _Ch_alloc > &__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter , typename _Ch_traits , typename _Ch_alloc >
bool | operator!= (const __sub_match_string< _Bi_iter, _Ch_traits, _Ch_alloc > &__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter , typename _Ch_traits , typename _Ch_alloc >
bool | operator< (const __sub_match_string< _Bi_iter, _Ch_traits, _Ch_alloc > &__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter , typename _Ch_traits , typename _Ch_alloc >
bool | operator> (const __sub_match_string< _Bi_iter, _Ch_traits, _Ch_alloc > &__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter , typename _Ch_traits , typename _Ch_alloc >
bool | operator>= (const __sub_match_string< _Bi_iter, _Ch_traits, _Ch_alloc > &__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter , typename _Ch_traits , typename _Ch_alloc >
bool | operator<= (const __sub_match_string< _Bi_iter, _Ch_traits, _Ch_alloc > &__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter , typename _Ch_traits , typename _Ch_alloc >
bool | operator== (const sub_match< _Bi_iter > &__lhs, const __sub_match_string< _Bi_iter, _Ch_traits, _Ch_alloc > &__rhs)
template<typename _Bi_iter , typename _Ch_traits , typename _Ch_alloc >
bool | operator!= (const sub_match< _Bi_iter > &__lhs, const __sub_match_string< _Bi_iter, _Ch_traits, _Ch_alloc > &__rhs)
template<typename _Bi_iter , typename _Ch_traits , typename _Ch_alloc >
bool | operator< (const sub_match< _Bi_iter > &__lhs, const __sub_match_string< _Bi_iter, _Ch_traits, _Ch_alloc > &__rhs)
template<typename _Bi_iter , typename _Ch_traits , typename _Ch_alloc >
bool | operator> (const sub_match< _Bi_iter > &__lhs, const __sub_match_string< _Bi_iter, _Ch_traits, _Ch_alloc > &__rhs)
template<typename _Bi_iter , typename _Ch_traits , typename _Ch_alloc >
bool | operator>= (const sub_match< _Bi_iter > &__lhs, const __sub_match_string< _Bi_iter, _Ch_traits, _Ch_alloc > &__rhs)
template<typename _Bi_iter , typename _Ch_traits , typename _Ch_alloc >
bool | operator<= (const sub_match< _Bi_iter > &__lhs, const __sub_match_string< _Bi_iter, _Ch_traits, _Ch_alloc > &__rhs)
template<typename _Bi_iter >
bool | operator== (typename iterator_traits< _Bi_iter >::value_type const *__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter >
bool | operator!= (typename iterator_traits< _Bi_iter >::value_type const *__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter >
bool | operator< (typename iterator_traits< _Bi_iter >::value_type const *__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter >
bool | operator> (typename iterator_traits< _Bi_iter >::value_type const *__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter >
bool | operator>= (typename iterator_traits< _Bi_iter >::value_type const *__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter >
bool | operator<= (typename iterator_traits< _Bi_iter >::value_type const *__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter >
bool | operator== (const sub_match< _Bi_iter > &__lhs, typename iterator_traits< _Bi_iter >::value_type const *__rhs)
template<typename _Bi_iter >
bool | operator!= (const sub_match< _Bi_iter > &__lhs, typename iterator_traits< _Bi_iter >::value_type const *__rhs)
template<typename _Bi_iter >
bool | operator< (const sub_match< _Bi_iter > &__lhs, typename iterator_traits< _Bi_iter >::value_type const *__rhs)
template<typename _Bi_iter >
bool | operator> (const sub_match< _Bi_iter > &__lhs, typename iterator_traits< _Bi_iter >::value_type const *__rhs)
template<typename _Bi_iter >
bool | operator>= (const sub_match< _Bi_iter > &__lhs, typename iterator_traits< _Bi_iter >::value_type const *__rhs)
template<typename _Bi_iter >
bool | operator<= (const sub_match< _Bi_iter > &__lhs, typename iterator_traits< _Bi_iter >::value_type const *__rhs)
template<typename _Bi_iter >
bool | operator== (typename iterator_traits< _Bi_iter >::value_type const &__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter >
bool | operator!= (typename iterator_traits< _Bi_iter >::value_type const &__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter >
bool | operator< (typename iterator_traits< _Bi_iter >::value_type const &__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter >
bool | operator> (typename iterator_traits< _Bi_iter >::value_type const &__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter >
bool | operator>= (typename iterator_traits< _Bi_iter >::value_type const &__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter >
bool | operator<= (typename iterator_traits< _Bi_iter >::value_type const &__lhs, const sub_match< _Bi_iter > &__rhs)
template<typename _Bi_iter >
bool | operator== (const sub_match< _Bi_iter > &__lhs, typename iterator_traits< _Bi_iter >::value_type const &__rhs)
template<typename _Bi_iter >
bool | operator!= (const sub_match< _Bi_iter > &__lhs, typename iterator_traits< _Bi_iter >::value_type const &__rhs)
template<typename _Bi_iter >
bool | operator< (const sub_match< _Bi_iter > &__lhs, typename iterator_traits< _Bi_iter >::value_type const &__rhs)
template<typename _Bi_iter >
bool | operator> (const sub_match< _Bi_iter > &__lhs, typename iterator_traits< _Bi_iter >::value_type const &__rhs)
template<typename _Bi_iter >
bool | operator>= (const sub_match< _Bi_iter > &__lhs, typename iterator_traits< _Bi_iter >::value_type const &__rhs)
template<typename _Bi_iter >
bool | operator<= (const sub_match< _Bi_iter > &__lhs, typename iterator_traits< _Bi_iter >::value_type const &__rhs)
template<typename _Ch_type , typename _Ch_traits , typename _Bi_iter >
basic_ostream< _Ch_type, _Ch_traits > & | operator<< (basic_ostream< _Ch_type, _Ch_traits > &__os, const sub_match< _Bi_iter > &__m)
constexpr enable_if< __and_< __is_swappable< _BiIter >, __is_swappable< _BiIter > >::value >::type | swap (pair< _BiIter, _BiIter > &__x, pair< _BiIter, _BiIter > &__y) noexcept(noexcept(__x.swap(__y)))
constexpr bool | operator== (const pair< _BiIter, _BiIter > &__x, const pair< _BiIter, _BiIter > &__y)
constexpr bool | operator< (const pair< _BiIter, _BiIter > &__x, const pair< _BiIter, _BiIter > &__y)
constexpr bool | operator!= (const pair< _BiIter, _BiIter > &__x, const pair< _BiIter, _BiIter > &__y)
constexpr bool | operator> (const pair< _BiIter, _BiIter > &__x, const pair< _BiIter, _BiIter > &__y)
constexpr bool | operator<= (const pair< _BiIter, _BiIter > &__x, const pair< _BiIter, _BiIter > &__y)
constexpr bool | operator>= (const pair< _BiIter, _BiIter > &__x, const pair< _BiIter, _BiIter > &__y)

## Detailed Description

template<typename _BiIter>
class std::sub_match< _BiIter >

A sequence of characters matched by a particular marked sub-expression.

An object of this class is essentially a pair of iterators marking a matched subexpression within a regular expression pattern match. Such objects can be converted to and compared with std::basic_string objects of a similar base character type as the pattern matched by the regular expression.

The iterators that make up the pair are the usual half-open interval referencing the actual original pattern matched.

Definition at line 891 of file regex.h.

## Member Typedef Documentation

## difference_type

template<typename _BiIter >

typedef __iter_traits::difference_type std::sub_match< _BiIter >::difference_type

Definition at line 897 of file regex.h.

## first_type

typedef _BiIter std::pair< _BiIter , _BiIter >::first_type

inherited

The type of the `first` member.

Definition at line 214 of file stl_pair.h.

## iterator

template<typename _BiIter >

typedef _BiIter std::sub_match< _BiIter >::iterator

Definition at line 898 of file regex.h.

## second_type

typedef _BiIter std::pair< _BiIter , _BiIter >::second_type

inherited

The type of the `second` member.

Definition at line 215 of file stl_pair.h.

## string_type

template<typename _BiIter >

typedef basic_string<value_type> std::sub_match< _BiIter >::string_type

Definition at line 899 of file regex.h.

## value_type

template<typename _BiIter >

typedef __iter_traits::value_type std::sub_match< _BiIter >::value_type

Definition at line 896 of file regex.h.

## Constructor & Destructor Documentation

## sub_match()

template<typename _BiIter >

constexpr std::sub_match< _BiIter >::sub_match | ( |  | ) |

inline constexpr noexcept

Definition at line 903 of file regex.h.

## Member Function Documentation

## compare() [1/3]

template<typename _BiIter >

int std::sub_match< _BiIter >::compare | ( | const string_type & | __s | ) | const

inline

Compares this `sub_match` to a string.

Parameters

  __s | A string to compare to this `sub_match`.

Return values

  negative | This matched sequence will collate before `__s`.
  zero | This matched sequence is equivalent to `__s`.
  positive | This matched sequence will collate after `__s`.

Definition at line 960 of file regex.h.

## compare() [2/3]

template<typename _BiIter >

int std::sub_match< _BiIter >::compare | ( | const sub_match< _BiIter > & | __s | ) | const

inline

Compares this and another matched sequence.

Parameters

  __s | Another matched sequence to compare to this one.

Return values

  negative | This matched sequence will collate before `__s`.
  zero | This matched sequence is equivalent to `__s`.
  positive | This matched sequence will collate after `__s`.

Definition at line 946 of file regex.h.

## compare() [3/3]

template<typename _BiIter >

int std::sub_match< _BiIter >::compare | ( | const value_type * | __s | ) | const

inline

Compares this `sub_match` to a string.

Parameters

  __s | A string to compare to this `sub_match`.

Return values

  negative | This matched sequence will collate before `__s`.
  zero | This matched sequence is equivalent to `__s`.
  positive | This matched sequence will collate after `__s`.

Definition at line 964 of file regex.h.

## length()

template<typename _BiIter >

difference_type std::sub_match< _BiIter >::length | ( |  | ) | const

inline noexcept

Gets the length of the matching sequence.

Definition at line 907 of file regex.h.

References std::distance(), std::pair< _BiIter, _BiIter >::first, and std::pair< _BiIter, _BiIter >::second.

## operator string_type()

template<typename _BiIter >

std::sub_match< _BiIter >::operator string_type | ( |  | ) | const

inline

Gets the matching sequence as a string.

Returns
  the matching sequence as a string.

This is the implicit conversion operator. It is identical to the str() member function except that it will want to pop up in unexpected places and cause a great deal of confusion and cursing from the unwary.

Definition at line 920 of file regex.h.

References std::sub_match< _BiIter >::str().

## str()

template<typename _BiIter >

string_type std::sub_match< _BiIter >::str | ( |  | ) | const

inline

Gets the matching sequence as a string.

Returns
  the matching sequence as a string.

Definition at line 929 of file regex.h.

References std::pair< _BiIter, _BiIter >::first, and std::pair< _BiIter, _BiIter >::second.

Referenced by std::sub_match< _BiIter >::operator string_type().

## swap()

constexpr void std::pair< _BiIter , _BiIter >::swap | ( | pair< _BiIter, _BiIter > & | __p | ) |

inline constexpr noexcept inherited

Swap the first members and then the second members.

Definition at line 439 of file stl_pair.h.

## Friends And Related Symbol Documentation

## make_pair()

constexpr pair< typename __decay_and_strip< _BiIter >::__type, typename __decay_and_strip< _BiIter >::__type > make_pair | ( | _BiIter && | __x,
|  | _BiIter && | __y
| ) |  |

related

A convenience wrapper for creating a pair from two objects.

Parameters

  __x | The first object.
  __y | The second object.

Returns
  A newly-constructed pair<> object of the appropriate type.

The C++98 standard says the objects are passed by reference-to-const, but C++03 says they are passed by value (this was LWG issue #181).

Since C++11 they have been passed by forwarding reference and then forwarded to the new members of the pair. To create a pair with a member of reference type, pass a `reference_wrapper` to this function.

Definition at line 567 of file stl_pair.h.

## operator!=()

constexpr bool operator!= | ( | const pair< _BiIter , _BiIter > & | __x,
|  | const pair< _BiIter , _BiIter > & | __y
| ) |  |

related

Uses `operator==` to find the result.

Definition at line 496 of file stl_pair.h.

## operator<()

constexpr bool operator< | ( | const pair< _BiIter , _BiIter > & | __x,
|  | const pair< _BiIter , _BiIter > & | __y
| ) |  |

related

Defines a lexicographical order for pairs.

For two pairs of the same type, `P` is ordered before `Q` if `P.first` is less than `Q.first`, or if `P.first` and `Q.first` are equivalent (neither is less than the other) and `P.second` is less than `Q.second`.

Definition at line 488 of file stl_pair.h.

## operator<=()

constexpr bool operator<= | ( | const pair< _BiIter , _BiIter > & | __x,
|  | const pair< _BiIter , _BiIter > & | __y
| ) |  |

related

Uses `operator<` to find the result.

Definition at line 507 of file stl_pair.h.

## operator==()

constexpr bool operator== | ( | const pair< _BiIter , _BiIter > & | __x,
|  | const pair< _BiIter , _BiIter > & | __y
| ) |  |

related

Two pairs of the same type are equal iff their members are equal.

Definition at line 466 of file stl_pair.h.

## operator>()

constexpr bool operator> | ( | const pair< _BiIter , _BiIter > & | __x,
|  | const pair< _BiIter , _BiIter > & | __y
| ) |  |

related

Uses `operator<` to find the result.

Definition at line 502 of file stl_pair.h.

## operator>=()

constexpr bool operator>= | ( | const pair< _BiIter , _BiIter > & | __x,
|  | const pair< _BiIter , _BiIter > & | __y
| ) |  |

related

Uses `operator<` to find the result.

Definition at line 514 of file stl_pair.h.

## swap()

constexpr enable_if< __and_< __is_swappable< _BiIter >, __is_swappable< _BiIter > >::value >::type swap | ( | pair< _BiIter , _BiIter > & | __x,
|  | pair< _BiIter , _BiIter > & | __y
| ) |  |

related

Swap overload for pairs. Calls std::pair::swap().

Note
  This std::swap overload is not declared in C++03 mode, which has performance implications, e.g. see https://gcc.gnu.org/PR38466

Definition at line 533 of file stl_pair.h.

## Member Data Documentation

## first

_BiIter std::pair< _BiIter , _BiIter >::first

inherited

The first member.

Definition at line 217 of file stl_pair.h.

## matched

template<typename _BiIter >

bool std::sub_match< _BiIter >::matched

Definition at line 901 of file regex.h.

## second

_BiIter std::pair< _BiIter , _BiIter >::second

inherited

The second member.

Definition at line 218 of file stl_pair.h.

The documentation for this class was generated from the following file:

- regex.h