//===----------------------------------------------------------------------===// // // 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 int main() { // This regex_iterator uses regex_search(__wrap_iter<_Iter> __first, ...) // Test for http://llvm.org/bugs/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{}; 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{}; 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); } }