127405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant//===----------------------------------------------------------------------===//
227405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant//
327405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant//                     The LLVM Compiler Infrastructure
427405f91a83821e659963bec5f3e71be7e4c08e6Howard 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.
727405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant//
827405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant//===----------------------------------------------------------------------===//
927405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant
1027405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant// <regex>
1127405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant
1227405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant// class match_results<BidirectionalIterator, Allocator>
1327405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant
1427405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant// template <class BidirectionalIterator, class Allocator>
1527405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant//    bool
1627405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant//    operator==(const match_results<BidirectionalIterator, Allocator>& m1,
1727405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant//               const match_results<BidirectionalIterator, Allocator>& m2);
1827405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant
1927405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant// template <class BidirectionalIterator, class Allocator>
2027405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant//    bool
2127405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant//    operator!=(const match_results<BidirectionalIterator, Allocator>& m1,
2227405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant//               const match_results<BidirectionalIterator, Allocator>& m2);
2327405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant
2427405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant#include <regex>
2527405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant#include <cassert>
26ee226c05af9e0187098f43fb71465a581487af9bDan Austin#include "test_macros.h"
2727405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant
2827405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnantvoid
2927405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnanttest()
3027405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant{
3127405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant    std::match_results<const char*> m1;
3227405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant    const char s[] = "abcdefghijk";
3327405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant    assert(std::regex_search(s, m1, std::regex("cd((e)fg)hi")));
3427405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant    std::match_results<const char*> m2;
3527405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant
3627405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant    assert(m1 == m1);
3727405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant    assert(m1 != m2);
3827405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant
3927405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant    m2 = m1;
4027405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant
4127405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant    assert(m1 == m2);
4227405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant}
4327405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant
4427405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnantint main()
4527405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant{
4627405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant    test();
4727405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant}
48