Class template 
sub_match denotes the sequence of characters matched
by a particular marked sub-expression
.namespace std {
  template<class BidirectionalIterator>
    class sub_match : public pair<BidirectionalIterator, BidirectionalIterator> {
    public:
      using value_type      =
              typename iterator_traits<BidirectionalIterator>::value_type;
      using difference_type =
              typename iterator_traits<BidirectionalIterator>::difference_type;
      using iterator        = BidirectionalIterator;
      using string_type     = basic_string<value_type>;
      bool matched;
      constexpr sub_match();
      difference_type length() const;
      operator string_type() const;
      string_type str() const;
      int compare(const sub_match& s) const;
      int compare(const string_type& s) const;
      int compare(const value_type* s) const;
      void swap(sub_match& s) noexcept(see below);
    };
}