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// void swap(match_results& that);
1527405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant
1627405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant#include <regex>
1727405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant#include <cassert>
1827405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant
1927405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnantvoid
2027405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnanttest()
2127405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant{
2227405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant    std::match_results<const char*> m1;
2327405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant    const char s[] = "abcdefghijk";
2427405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant    assert(std::regex_search(s, m1, std::regex("cd((e)fg)hi")));
2527405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant    std::match_results<const char*> m2;
2627405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant
2727405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant    std::match_results<const char*> m1_save = m1;
2827405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant    std::match_results<const char*> m2_save = m2;
2927405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant
3027405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant    m1.swap(m2);
3127405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant
3227405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant    assert(m1 == m2_save);
3327405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant    assert(m2 == m1_save);
3427405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant}
3527405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant
3627405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnantint main()
3727405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant{
3827405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant    test();
3927405f91a83821e659963bec5f3e71be7e4c08e6Howard Hinnant}
40