| 2338 | |
| 2339 | template<class InputIt, class Compare> |
| 2340 | void priv_set_difference_back(InputIt first1, InputIt last1, Compare comp) |
| 2341 | { |
| 2342 | T * old_first2 = this->priv_raw_begin(); |
| 2343 | T * first2 = old_first2; |
| 2344 | T * last2 = this->priv_raw_end(); |
| 2345 | |
| 2346 | while (first1 != last1) { |
| 2347 | if (first2 == last2){ |
| 2348 | this->insert(this->cend(), first1, last1); |
| 2349 | return; |
| 2350 | } |
| 2351 | |
| 2352 | if (comp(*first1, *first2)) { |
| 2353 | this->emplace_back(*first1); |
| 2354 | T * const raw_begin = this->priv_raw_begin(); |
| 2355 | if(old_first2 != raw_begin) |
| 2356 | { |
| 2357 | //Reallocation happened, update range |
| 2358 | first2 = raw_begin + (first2 - old_first2); |
| 2359 | last2 = raw_begin + (last2 - old_first2); |
| 2360 | old_first2 = raw_begin; |
| 2361 | } |
| 2362 | ++first1; |
| 2363 | } |
| 2364 | else { |
| 2365 | if (!comp(*first2, *first1)) { |
| 2366 | ++first1; |
| 2367 | } |
| 2368 | ++first2; |
| 2369 | } |
| 2370 | } |
| 2371 | } |
| 2372 | |
| 2373 | template<class FwdIt, class Compare> |
| 2374 | BOOST_CONTAINER_FORCEINLINE void priv_merge_in_new_buffer(FwdIt, size_type, Compare, version_0) |
nothing calls this directly
no test coverage detected