SILENT KILLERPanel

Current Path: > > usr > include > c++ > > 8 > bits


Operation   : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
Software     : Apache
Server IP    : 162.0.232.56 | Your IP: 216.73.216.111
Domains      : 1034 Domain(s)
Permission   : [ 0755 ]

Files and Folders in: //usr/include/c++//8/bits

NameTypeSizeLast ModifiedActions
algorithmfwd.h File 21736 bytes March 31 2025 10:36:16.
alloc_traits.h File 20066 bytes March 31 2025 10:36:16.
allocated_ptr.h File 3293 bytes March 31 2025 10:36:16.
allocator.h File 7569 bytes March 31 2025 10:36:16.
atomic_base.h File 23842 bytes March 31 2025 10:36:16.
atomic_futex.h File 9576 bytes March 31 2025 10:36:16.
atomic_lockfree_defines.h File 2253 bytes March 31 2025 10:36:18.
basic_ios.h File 16074 bytes March 31 2025 10:36:16.
basic_ios.tcc File 6083 bytes March 31 2025 10:36:16.
basic_string.h File 242697 bytes March 31 2025 10:36:16.
basic_string.tcc File 53755 bytes March 31 2025 10:36:16.
boost_concept_check.h File 27161 bytes March 31 2025 10:36:16.
c++0x_warning.h File 1474 bytes March 31 2025 10:36:16.
char_traits.h File 20915 bytes March 31 2025 10:36:16.
codecvt.h File 21289 bytes March 31 2025 10:36:16.
concept_check.h File 3423 bytes March 31 2025 10:36:16.
cpp_type_traits.h File 9789 bytes March 31 2025 10:36:16.
cxxabi_forced.h File 1811 bytes March 31 2025 10:36:18.
cxxabi_init_exception.h File 2220 bytes March 31 2025 10:36:18.
deque.tcc File 34122 bytes March 31 2025 10:36:16.
enable_special_members.h File 12387 bytes March 31 2025 10:36:16.
exception.h File 2280 bytes March 31 2025 10:36:18.
exception_defines.h File 1645 bytes March 31 2025 10:36:18.
exception_ptr.h File 5981 bytes March 31 2025 10:36:18.
forward_list.h File 48919 bytes March 31 2025 10:36:16.
forward_list.tcc File 13169 bytes March 31 2025 10:36:16.
fs_dir.h File 14724 bytes March 31 2025 10:36:16.
fs_fwd.h File 10279 bytes March 31 2025 10:36:16.
fs_ops.h File 9730 bytes March 31 2025 10:36:16.
fs_path.h File 32894 bytes March 31 2025 10:36:16.
fstream.tcc File 32799 bytes March 31 2025 10:36:16.
functexcept.h File 3254 bytes March 31 2025 10:36:16.
functional_hash.h File 8238 bytes March 31 2025 10:36:16.
gslice.h File 5518 bytes March 31 2025 10:36:16.
gslice_array.h File 7769 bytes March 31 2025 10:36:16.
hash_bytes.h File 2146 bytes March 31 2025 10:36:18.
hashtable.h File 73785 bytes March 31 2025 10:36:16.
hashtable_policy.h File 67971 bytes March 31 2025 10:36:16.
indirect_array.h File 7861 bytes March 31 2025 10:36:16.
invoke.h File 3657 bytes March 31 2025 10:36:16.
ios_base.h File 31023 bytes March 31 2025 10:36:16.
istream.tcc File 31093 bytes March 31 2025 10:36:16.
list.tcc File 15976 bytes March 31 2025 10:36:16.
locale_classes.h File 24897 bytes March 31 2025 10:36:16.
locale_classes.tcc File 8375 bytes March 31 2025 10:36:16.
locale_conv.h File 16097 bytes March 31 2025 10:36:16.
locale_facets.h File 92328 bytes March 31 2025 10:36:16.
locale_facets.tcc File 39548 bytes March 31 2025 10:36:16.
locale_facets_nonio.h File 68980 bytes March 31 2025 10:36:16.
locale_facets_nonio.tcc File 45280 bytes March 31 2025 10:36:16.
localefwd.h File 5646 bytes March 31 2025 10:36:16.
mask_array.h File 7595 bytes March 31 2025 10:36:16.
memoryfwd.h File 2453 bytes March 31 2025 10:36:16.
move.h File 6529 bytes March 31 2025 10:36:16.
nested_exception.h File 4802 bytes March 31 2025 10:36:18.
node_handle.h File 8216 bytes March 31 2025 10:36:16.
ostream.tcc File 12315 bytes March 31 2025 10:36:16.
ostream_insert.h File 4002 bytes March 31 2025 10:36:16.
parse_numbers.h File 7944 bytes March 31 2025 10:36:16.
postypes.h File 8208 bytes March 31 2025 10:36:16.
predefined_ops.h File 9083 bytes March 31 2025 10:36:16.
ptr_traits.h File 6626 bytes March 31 2025 10:36:16.
quoted_string.h File 5053 bytes March 31 2025 10:36:16.
random.h File 175250 bytes March 31 2025 10:36:16.
random.tcc File 105590 bytes March 31 2025 10:36:16.
range_access.h File 10030 bytes March 31 2025 10:36:16.
refwrap.h File 11884 bytes March 31 2025 10:36:16.
regex.h File 97402 bytes March 31 2025 10:36:16.
regex.tcc File 16565 bytes March 31 2025 10:36:16.
regex_automaton.h File 10722 bytes March 31 2025 10:36:16.
regex_automaton.tcc File 7838 bytes March 31 2025 10:36:16.
regex_compiler.h File 18050 bytes March 31 2025 10:36:16.
regex_compiler.tcc File 19288 bytes March 31 2025 10:36:16.
regex_constants.h File 14708 bytes March 31 2025 10:36:16.
regex_error.h File 4904 bytes March 31 2025 10:36:16.
regex_executor.h File 7488 bytes March 31 2025 10:36:16.
regex_executor.tcc File 18841 bytes March 31 2025 10:36:16.
regex_scanner.h File 7088 bytes March 31 2025 10:36:16.
regex_scanner.tcc File 15009 bytes March 31 2025 10:36:16.
shared_ptr.h File 23433 bytes March 31 2025 10:36:16.
shared_ptr_atomic.h File 9769 bytes March 31 2025 10:36:16.
shared_ptr_base.h File 54286 bytes March 31 2025 10:36:16.
slice_array.h File 9348 bytes March 31 2025 10:36:16.
specfun.h File 47051 bytes March 31 2025 10:36:16.
sstream.tcc File 10142 bytes March 31 2025 10:36:16.
std_abs.h File 3266 bytes March 31 2025 10:36:16.
std_function.h File 23260 bytes March 31 2025 10:36:16.
std_mutex.h File 9298 bytes March 31 2025 10:36:16.
stl_algo.h File 214294 bytes March 31 2025 10:36:16.
stl_algobase.h File 50494 bytes March 31 2025 10:36:16.
stl_bvector.h File 33728 bytes March 31 2025 10:36:16.
stl_construct.h File 7397 bytes March 31 2025 10:36:16.
stl_deque.h File 78575 bytes March 31 2025 10:36:16.
stl_function.h File 41745 bytes March 31 2025 10:36:16.
stl_heap.h File 20206 bytes March 31 2025 10:36:16.
stl_iterator.h File 42291 bytes March 31 2025 10:36:16.
stl_iterator_base_funcs.h File 8178 bytes March 31 2025 10:36:16.
stl_iterator_base_types.h File 8680 bytes March 31 2025 10:36:16.
stl_list.h File 67558 bytes March 31 2025 10:36:16.
stl_map.h File 52791 bytes March 31 2025 10:36:16.
stl_multimap.h File 41557 bytes March 31 2025 10:36:16.
stl_multiset.h File 35809 bytes March 31 2025 10:36:16.
stl_numeric.h File 13832 bytes March 31 2025 10:36:16.
stl_pair.h File 18642 bytes March 31 2025 10:36:16.
stl_queue.h File 24073 bytes March 31 2025 10:36:16.
stl_raw_storage_iter.h File 3830 bytes March 31 2025 10:36:16.
stl_relops.h File 4594 bytes March 31 2025 10:36:16.
stl_set.h File 36125 bytes March 31 2025 10:36:16.
stl_stack.h File 11938 bytes March 31 2025 10:36:16.
stl_tempbuf.h File 8344 bytes March 31 2025 10:36:16.
stl_tree.h File 74904 bytes March 31 2025 10:36:16.
stl_uninitialized.h File 27709 bytes March 31 2025 10:36:16.
stl_vector.h File 60534 bytes March 31 2025 10:36:16.
stream_iterator.h File 6654 bytes March 31 2025 10:36:16.
streambuf.tcc File 4929 bytes March 31 2025 10:36:16.
streambuf_iterator.h File 13758 bytes March 31 2025 10:36:16.
string_view.tcc File 6698 bytes March 31 2025 10:36:16.
stringfwd.h File 2607 bytes March 31 2025 10:36:16.
uniform_int_dist.h File 10081 bytes March 31 2025 10:36:16.
unique_ptr.h File 25984 bytes March 31 2025 10:36:16.
unordered_map.h File 75341 bytes March 31 2025 10:36:16.
unordered_set.h File 59148 bytes March 31 2025 10:36:16.
uses_allocator.h File 6525 bytes March 31 2025 10:36:16.
valarray_after.h File 22655 bytes March 31 2025 10:36:16.
valarray_array.h File 21807 bytes March 31 2025 10:36:16.
valarray_array.tcc File 7254 bytes March 31 2025 10:36:16.
valarray_before.h File 18513 bytes March 31 2025 10:36:16.
vector.tcc File 29644 bytes March 31 2025 10:36:16.

Reading File: //usr/include/c++//8/bits/regex.tcc

// class template regex -*- C++ -*-

// Copyright (C) 2013-2018 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library.  This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.

// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.

// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
// <http://www.gnu.org/licenses/>.

/**
 *  @file bits/regex.tcc
 *  This is an internal header file, included by other library headers.
 *  Do not attempt to use it directly. @headername{regex}
 */

namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION

namespace __detail
{
  // Result of merging regex_match and regex_search.
  //
  // __policy now can be _S_auto (auto dispatch) and _S_alternate (use
  // the other one if possible, for test purpose).
  //
  // That __match_mode is true means regex_match, else regex_search.
  template<typename _BiIter, typename _Alloc,
	   typename _CharT, typename _TraitsT,
	   _RegexExecutorPolicy __policy,
	   bool __match_mode>
    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)
    {
      if (__re._M_automaton == nullptr)
	return false;

      typename match_results<_BiIter, _Alloc>::_Base_type& __res = __m;
      __m._M_begin = __s;
      __m._M_resize(__re._M_automaton->_M_sub_count());
      for (auto& __it : __res)
	__it.matched = false;

      bool __ret;
      if ((__re.flags() & regex_constants::__polynomial)
	  || (__policy == _RegexExecutorPolicy::_S_alternate
	      && !__re._M_automaton->_M_has_backref))
	{
	  _Executor<_BiIter, _Alloc, _TraitsT, false>
	    __executor(__s, __e, __m, __re, __flags);
	  if (__match_mode)
	    __ret = __executor._M_match();
	  else
	    __ret = __executor._M_search();
	}
      else
	{
	  _Executor<_BiIter, _Alloc, _TraitsT, true>
	    __executor(__s, __e, __m, __re, __flags);
	  if (__match_mode)
	    __ret = __executor._M_match();
	  else
	    __ret = __executor._M_search();
	}
      if (__ret)
	{
	  for (auto& __it : __res)
	    if (!__it.matched)
	      __it.first = __it.second = __e;
	  auto& __pre = __m._M_prefix();
	  auto& __suf = __m._M_suffix();
	  if (__match_mode)
	    {
	      __pre.matched = false;
	      __pre.first = __s;
	      __pre.second = __s;
	      __suf.matched = false;
	      __suf.first = __e;
	      __suf.second = __e;
	    }
	  else
	    {
	      __pre.first = __s;
	      __pre.second = __res[0].first;
	      __pre.matched = (__pre.first != __pre.second);
	      __suf.first = __res[0].second;
	      __suf.second = __e;
	      __suf.matched = (__suf.first != __suf.second);
	    }
	}
      else
	{
	  __m._M_resize(0);
	  for (auto& __it : __res)
	    {
	      __it.matched = false;
	      __it.first = __it.second = __e;
	    }
	}
      return __ret;
    }
}

  template<typename _Ch_type>
  template<typename _Fwd_iter>
    typename regex_traits<_Ch_type>::string_type
    regex_traits<_Ch_type>::
    lookup_collatename(_Fwd_iter __first, _Fwd_iter __last) const
    {
      typedef std::ctype<char_type> __ctype_type;
      const __ctype_type& __fctyp(use_facet<__ctype_type>(_M_locale));

      static const char* __collatenames[] =
	{
	  "NUL",
	  "SOH",
	  "STX",
	  "ETX",
	  "EOT",
	  "ENQ",
	  "ACK",
	  "alert",
	  "backspace",
	  "tab",
	  "newline",
	  "vertical-tab",
	  "form-feed",
	  "carriage-return",
	  "SO",
	  "SI",
	  "DLE",
	  "DC1",
	  "DC2",
	  "DC3",
	  "DC4",
	  "NAK",
	  "SYN",
	  "ETB",
	  "CAN",
	  "EM",
	  "SUB",
	  "ESC",
	  "IS4",
	  "IS3",
	  "IS2",
	  "IS1",
	  "space",
	  "exclamation-mark",
	  "quotation-mark",
	  "number-sign",
	  "dollar-sign",
	  "percent-sign",
	  "ampersand",
	  "apostrophe",
	  "left-parenthesis",
	  "right-parenthesis",
	  "asterisk",
	  "plus-sign",
	  "comma",
	  "hyphen",
	  "period",
	  "slash",
	  "zero",
	  "one",
	  "two",
	  "three",
	  "four",
	  "five",
	  "six",
	  "seven",
	  "eight",
	  "nine",
	  "colon",
	  "semicolon",
	  "less-than-sign",
	  "equals-sign",
	  "greater-than-sign",
	  "question-mark",
	  "commercial-at",
	  "A",
	  "B",
	  "C",
	  "D",
	  "E",
	  "F",
	  "G",
	  "H",
	  "I",
	  "J",
	  "K",
	  "L",
	  "M",
	  "N",
	  "O",
	  "P",
	  "Q",
	  "R",
	  "S",
	  "T",
	  "U",
	  "V",
	  "W",
	  "X",
	  "Y",
	  "Z",
	  "left-square-bracket",
	  "backslash",
	  "right-square-bracket",
	  "circumflex",
	  "underscore",
	  "grave-accent",
	  "a",
	  "b",
	  "c",
	  "d",
	  "e",
	  "f",
	  "g",
	  "h",
	  "i",
	  "j",
	  "k",
	  "l",
	  "m",
	  "n",
	  "o",
	  "p",
	  "q",
	  "r",
	  "s",
	  "t",
	  "u",
	  "v",
	  "w",
	  "x",
	  "y",
	  "z",
	  "left-curly-bracket",
	  "vertical-line",
	  "right-curly-bracket",
	  "tilde",
	  "DEL",
	};

      string __s;
      for (; __first != __last; ++__first)
	__s += __fctyp.narrow(*__first, 0);

      for (const auto& __it : __collatenames)
	if (__s == __it)
	  return string_type(1, __fctyp.widen(
	    static_cast<char>(&__it - __collatenames)));

      // TODO Add digraph support:
      // http://boost.sourceforge.net/libs/regex/doc/collating_names.html

      return string_type();
    }

  template<typename _Ch_type>
  template<typename _Fwd_iter>
    typename regex_traits<_Ch_type>::char_class_type
    regex_traits<_Ch_type>::
    lookup_classname(_Fwd_iter __first, _Fwd_iter __last, bool __icase) const
    {
      typedef std::ctype<char_type> __ctype_type;
      const __ctype_type& __fctyp(use_facet<__ctype_type>(_M_locale));

      // Mappings from class name to class mask.
      static const pair<const char*, char_class_type> __classnames[] =
      {
	{"d", ctype_base::digit},
	{"w", {ctype_base::alnum, _RegexMask::_S_under}},
	{"s", ctype_base::space},
	{"alnum", ctype_base::alnum},
	{"alpha", ctype_base::alpha},
	{"blank", ctype_base::blank},
	{"cntrl", ctype_base::cntrl},
	{"digit", ctype_base::digit},
	{"graph", ctype_base::graph},
	{"lower", ctype_base::lower},
	{"print", ctype_base::print},
	{"punct", ctype_base::punct},
	{"space", ctype_base::space},
	{"upper", ctype_base::upper},
	{"xdigit", ctype_base::xdigit},
      };

      string __s;
      for (; __first != __last; ++__first)
	__s += __fctyp.narrow(__fctyp.tolower(*__first), 0);

      for (const auto& __it : __classnames)
	if (__s == __it.first)
	  {
	    if (__icase
		&& ((__it.second
		     & (ctype_base::lower | ctype_base::upper)) != 0))
	      return ctype_base::alpha;
	    return __it.second;
	  }
      return 0;
    }

  template<typename _Ch_type>
    bool
    regex_traits<_Ch_type>::
    isctype(_Ch_type __c, char_class_type __f) const
    {
      typedef std::ctype<char_type> __ctype_type;
      const __ctype_type& __fctyp(use_facet<__ctype_type>(_M_locale));

      return __fctyp.is(__f._M_base, __c)
	// [[:w:]]
	|| ((__f._M_extended & _RegexMask::_S_under)
	    && __c == __fctyp.widen('_'));
    }

  template<typename _Ch_type>
    int
    regex_traits<_Ch_type>::
    value(_Ch_type __ch, int __radix) const
    {
      std::basic_istringstream<char_type> __is(string_type(1, __ch));
      long __v;
      if (__radix == 8)
	__is >> std::oct;
      else if (__radix == 16)
	__is >> std::hex;
      __is >> __v;
      return __is.fail() ? -1 : __v;
    }

  template<typename _Bi_iter, typename _Alloc>
  template<typename _Out_iter>
    _Out_iter match_results<_Bi_iter, _Alloc>::
    format(_Out_iter __out,
	   const match_results<_Bi_iter, _Alloc>::char_type* __fmt_first,
	   const match_results<_Bi_iter, _Alloc>::char_type* __fmt_last,
	   match_flag_type __flags) const
    {
      __glibcxx_assert( ready() );
      regex_traits<char_type> __traits;
      typedef std::ctype<char_type> __ctype_type;
      const __ctype_type&
	__fctyp(use_facet<__ctype_type>(__traits.getloc()));

      auto __output = [&](size_t __idx)
	{
	  auto& __sub = (*this)[__idx];
	  if (__sub.matched)
	    __out = std::copy(__sub.first, __sub.second, __out);
	};

      if (__flags & regex_constants::format_sed)
	{
	  bool __escaping = false;
	  for (; __fmt_first != __fmt_last; __fmt_first++)
	    {
	      if (__escaping)
		{
		  __escaping = false;
		  if (__fctyp.is(__ctype_type::digit, *__fmt_first))
		    __output(__traits.value(*__fmt_first, 10));
		  else
		    *__out++ = *__fmt_first;
		  continue;
		}
	      if (*__fmt_first == '\\')
		{
		  __escaping = true;
		  continue;
		}
	      if (*__fmt_first == '&')
		{
		  __output(0);
		  continue;
		}
	      *__out++ = *__fmt_first;
	    }
	  if (__escaping)
	    *__out++ = '\\';
	}
      else
	{
	  while (1)
	    {
	      auto __next = std::find(__fmt_first, __fmt_last, '$');
	      if (__next == __fmt_last)
		break;

	      __out = std::copy(__fmt_first, __next, __out);

	      auto __eat = [&](char __ch) -> bool
		{
		  if (*__next == __ch)
		    {
		      ++__next;
		      return true;
		    }
		  return false;
		};

	      if (++__next == __fmt_last)
		*__out++ = '$';
	      else if (__eat('$'))
		*__out++ = '$';
	      else if (__eat('&'))
		__output(0);
	      else if (__eat('`'))
		{
		  auto& __sub = _M_prefix();
		  if (__sub.matched)
		    __out = std::copy(__sub.first, __sub.second, __out);
		}
	      else if (__eat('\''))
		{
		  auto& __sub = _M_suffix();
		  if (__sub.matched)
		    __out = std::copy(__sub.first, __sub.second, __out);
		}
	      else if (__fctyp.is(__ctype_type::digit, *__next))
		{
		  long __num = __traits.value(*__next, 10);
		  if (++__next != __fmt_last
		      && __fctyp.is(__ctype_type::digit, *__next))
		    {
		      __num *= 10;
		      __num += __traits.value(*__next++, 10);
		    }
		  if (0 <= __num && __num < this->size())
		    __output(__num);
		}
	      else
		*__out++ = '$';
	      __fmt_first = __next;
	    }
	  __out = std::copy(__fmt_first, __fmt_last, __out);
	}
      return __out;
    }

  template<typename _Out_iter, typename _Bi_iter,
	   typename _Rx_traits, typename _Ch_type>
    _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,
		  regex_constants::match_flag_type __flags)
    {
      typedef regex_iterator<_Bi_iter, _Ch_type, _Rx_traits> _IterT;
      _IterT __i(__first, __last, __e, __flags);
      _IterT __end;
      if (__i == __end)
	{
	  if (!(__flags & regex_constants::format_no_copy))
	    __out = std::copy(__first, __last, __out);
	}
      else
	{
	  sub_match<_Bi_iter> __last;
	  auto __len = char_traits<_Ch_type>::length(__fmt);
	  for (; __i != __end; ++__i)
	    {
	      if (!(__flags & regex_constants::format_no_copy))
		__out = std::copy(__i->prefix().first, __i->prefix().second,
				  __out);
	      __out = __i->format(__out, __fmt, __fmt + __len, __flags);
	      __last = __i->suffix();
	      if (__flags & regex_constants::format_first_only)
		break;
	    }
	  if (!(__flags & regex_constants::format_no_copy))
	    __out = std::copy(__last.first, __last.second, __out);
	}
      return __out;
    }

  template<typename _Bi_iter,
	   typename _Ch_type,
	   typename _Rx_traits>
    bool
    regex_iterator<_Bi_iter, _Ch_type, _Rx_traits>::
    operator==(const regex_iterator& __rhs) const
    {
      if (_M_pregex == nullptr && __rhs._M_pregex == nullptr)
	return true;
      return _M_pregex == __rhs._M_pregex
	  && _M_begin == __rhs._M_begin
	  && _M_end == __rhs._M_end
	  && _M_flags == __rhs._M_flags
	  && _M_match[0] == __rhs._M_match[0];
    }

  template<typename _Bi_iter,
	   typename _Ch_type,
	   typename _Rx_traits>
    regex_iterator<_Bi_iter, _Ch_type, _Rx_traits>&
    regex_iterator<_Bi_iter, _Ch_type, _Rx_traits>::
    operator++()
    {
      // In all cases in which the call to regex_search returns true,
      // match.prefix().first shall be equal to the previous value of
      // match[0].second, and for each index i in the half-open range
      // [0, match.size()) for which match[i].matched is true,
      // match[i].position() shall return distance(begin, match[i].first).
      // [28.12.1.4.5]
      if (_M_match[0].matched)
	{
	  auto __start = _M_match[0].second;
	  auto __prefix_first = _M_match[0].second;
	  if (_M_match[0].first == _M_match[0].second)
	    {
	      if (__start == _M_end)
		{
		  _M_pregex = nullptr;
		  return *this;
		}
	      else
		{
		  if (regex_search(__start, _M_end, _M_match, *_M_pregex,
				   _M_flags
				   | regex_constants::match_not_null
				   | regex_constants::match_continuous))
		    {
		      __glibcxx_assert(_M_match[0].matched);
		      auto& __prefix = _M_match._M_prefix();
		      __prefix.first = __prefix_first;
		      __prefix.matched = __prefix.first != __prefix.second;
		      // [28.12.1.4.5]
		      _M_match._M_begin = _M_begin;
		      return *this;
		    }
		  else
		    ++__start;
		}
	    }
	  _M_flags |= regex_constants::match_prev_avail;
	  if (regex_search(__start, _M_end, _M_match, *_M_pregex, _M_flags))
	    {
	      __glibcxx_assert(_M_match[0].matched);
	      auto& __prefix = _M_match._M_prefix();
	      __prefix.first = __prefix_first;
	      __prefix.matched = __prefix.first != __prefix.second;
	      // [28.12.1.4.5]
	      _M_match._M_begin = _M_begin;
	    }
	  else
	    _M_pregex = nullptr;
	}
      return *this;
    }

  template<typename _Bi_iter,
	   typename _Ch_type,
	   typename _Rx_traits>
    regex_token_iterator<_Bi_iter, _Ch_type, _Rx_traits>&
    regex_token_iterator<_Bi_iter, _Ch_type, _Rx_traits>::
    operator=(const regex_token_iterator& __rhs)
    {
      _M_position = __rhs._M_position;
      _M_subs = __rhs._M_subs;
      _M_n = __rhs._M_n;
      _M_suffix = __rhs._M_suffix;
      _M_has_m1 = __rhs._M_has_m1;
      _M_normalize_result();
      return *this;
    }

  template<typename _Bi_iter,
	   typename _Ch_type,
	   typename _Rx_traits>
    bool
    regex_token_iterator<_Bi_iter, _Ch_type, _Rx_traits>::
    operator==(const regex_token_iterator& __rhs) const
    {
      if (_M_end_of_seq() && __rhs._M_end_of_seq())
	return true;
      if (_M_suffix.matched && __rhs._M_suffix.matched
	  && _M_suffix == __rhs._M_suffix)
	return true;
      if (_M_end_of_seq() || _M_suffix.matched
	  || __rhs._M_end_of_seq() || __rhs._M_suffix.matched)
	return false;
      return _M_position == __rhs._M_position
	&& _M_n == __rhs._M_n
	&& _M_subs == __rhs._M_subs;
    }

  template<typename _Bi_iter,
	   typename _Ch_type,
	   typename _Rx_traits>
    regex_token_iterator<_Bi_iter, _Ch_type, _Rx_traits>&
    regex_token_iterator<_Bi_iter, _Ch_type, _Rx_traits>::
    operator++()
    {
      _Position __prev = _M_position;
      if (_M_suffix.matched)
	*this = regex_token_iterator();
      else if (_M_n + 1 < _M_subs.size())
	{
	  _M_n++;
	  _M_result = &_M_current_match();
	}
      else
	{
	  _M_n = 0;
	  ++_M_position;
	  if (_M_position != _Position())
	    _M_result = &_M_current_match();
	  else if (_M_has_m1 && __prev->suffix().length() != 0)
	    {
	      _M_suffix.matched = true;
	      _M_suffix.first = __prev->suffix().first;
	      _M_suffix.second = __prev->suffix().second;
	      _M_result = &_M_suffix;
	    }
	  else
	    *this = regex_token_iterator();
	}
      return *this;
    }

  template<typename _Bi_iter,
	   typename _Ch_type,
	   typename _Rx_traits>
    void
    regex_token_iterator<_Bi_iter, _Ch_type, _Rx_traits>::
    _M_init(_Bi_iter __a, _Bi_iter __b)
    {
      _M_has_m1 = false;
      for (auto __it : _M_subs)
	if (__it == -1)
	  {
	    _M_has_m1 = true;
	    break;
	  }
      if (_M_position != _Position())
	_M_result = &_M_current_match();
      else if (_M_has_m1)
	{
	  _M_suffix.matched = true;
	  _M_suffix.first = __a;
	  _M_suffix.second = __b;
	  _M_result = &_M_suffix;
	}
      else
	_M_result = nullptr;
    }

_GLIBCXX_END_NAMESPACE_VERSION
} // namespace

SILENT KILLER Tool