//===----------------------------------------------------------------------===// // // The LLVM Compiler Infrastructure // // This file is dual licensed under the MIT and the University of Illinois Open // Source Licenses. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // template // bool // regex_search(BidirectionalIterator first, BidirectionalIterator last, // match_results& m, // const basic_regex& e, // regex_constants::match_flag_type flags = regex_constants::match_default); #include #include #include #include #include "test_macros.h" int main() { // This regex_iterator uses regex_search(__wrap_iter<_Iter> __first, ...) // Test for https://bugs.llvm.org/show_bug.cgi?id=16240 fixed in r185273. { std::string s("aaaa a"); std::regex re("\\ba"); std::sregex_iterator it(s.begin(), s.end(), re); std::sregex_iterator end = std::sregex_iterator(); assert(it->position(0) == 0); assert(it->length(0) == 1); ++it; assert(it->position(0) == 5); assert(it->length(0) == 1); ++it; assert(it == end); } // This regex_iterator uses regex_search(_BidirectionalIterator __first, ...) { std::string s("aaaa a"); std::list l(s.begin(), s.end()); std::regex re("\\ba"); std::regex_iterator::iterator> it(l.begin(), l.end(), re); std::regex_iterator::iterator> end = std::regex_iterator::iterator>(); assert(it->position(0) == 0); assert(it->length(0) == 1); ++it; assert(it->position(0) == 5); assert(it->length(0) == 1); ++it; assert(it == end); } }