17026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant//===----------------------------------------------------------------------===//
27026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant//
37026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant//                     The LLVM Compiler Infrastructure
47026a17a482a9f7fdd9fc41aead6a167167efb1bHoward 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.
77026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant//
87026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant//===----------------------------------------------------------------------===//
97026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant
107026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant// <regex>
117026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant
127026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant// template <class charT, class traits = regex_traits<charT>> class basic_regex;
137026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant
147026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant// template <class InputIterator>
157026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant//    basic_regex&
167026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant//    assign(InputIterator first, InputIterator last,
177026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant//           flag_type f = regex_constants::ECMAScript);
187026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant
197026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant#include <regex>
207026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant#include <cassert>
217026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant
22ee226c05af9e0187098f43fb71465a581487af9bDan Austin#include "test_macros.h"
2383e2c4d877fe2d7793868b1c6a5d9525a7c4d431Marshall Clow#include "test_iterators.h"
247026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant
257026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnantint main()
267026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant{
277026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant    typedef input_iterator<std::string::const_iterator> I;
287026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant    typedef forward_iterator<std::string::const_iterator> F;
297026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant    std::string s4("(a([bc]))");
307026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant    std::regex r2;
317026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant
327026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant    r2.assign(I(s4.begin()), I(s4.end()));
337026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant    assert(r2.flags() == std::regex::ECMAScript);
347026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant    assert(r2.mark_count() == 2);
357026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant
367026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant    r2.assign(I(s4.begin()), I(s4.end()), std::regex::extended);
377026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant    assert(r2.flags() == std::regex::extended);
387026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant    assert(r2.mark_count() == 2);
397026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant
407026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant    r2.assign(F(s4.begin()), F(s4.end()));
417026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant    assert(r2.flags() == std::regex::ECMAScript);
427026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant    assert(r2.mark_count() == 2);
437026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant
447026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant    r2.assign(F(s4.begin()), F(s4.end()), std::regex::extended);
457026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant    assert(r2.flags() == std::regex::extended);
467026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant    assert(r2.mark_count() == 2);
477026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant}
48