1cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant//===----------------------------------------------------------------------===//
2cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant//
3cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant//                     The LLVM Compiler Infrastructure
4cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant//
5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open
6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. See LICENSE.TXT for details.
7cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant//
8cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant//===----------------------------------------------------------------------===//
9cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant
10cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant// <regex>
11cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant
12cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant// template <class BidirectionalIterator> class sub_match;
13cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant
14cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant// int compare(const string_type& s) const;
15cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant
16cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant#include <regex>
17cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant#include <cassert>
186dfff1c9b9147641601574c953e208ece17f27d8Marshall Clow#include "test_macros.h"
19cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant
20cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnantint main()
21cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant{
22cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant    {
23cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant        typedef char CharT;
24cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant        typedef std::sub_match<const CharT*> SM;
25cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant        typedef SM::string_type string;
26cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant        SM sm = SM();
27cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant        assert(sm.compare(string()) == 0);
28cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant        const CharT s[] = {'1', '2', '3', 0};
29cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant        sm.first = s;
30cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant        sm.second = s + 3;
31cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant        sm.matched = true;
32cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant        assert(sm.compare(string()) > 0);
33cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant        assert(sm.compare(string("123")) == 0);
34cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant    }
35cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant    {
36cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant        typedef wchar_t CharT;
37cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant        typedef std::sub_match<const CharT*> SM;
38cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant        typedef SM::string_type string;
39cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant        SM sm = SM();
40cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant        assert(sm.compare(string()) == 0);
41cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant        const CharT s[] = {'1', '2', '3', 0};
42cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant        sm.first = s;
43cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant        sm.second = s + 3;
44cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant        sm.matched = true;
45cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant        assert(sm.compare(string()) > 0);
46cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant        assert(sm.compare(string(L"123")) == 0);
47cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant    }
48cd85b9ee137e179cf38d935fc500e12521ccd3d2Howard Hinnant}
49