From 053adb2b22c8a259fc1aa73abd5d3b25897aea3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ion=20Gazta=C3=B1aga?= Date: Fri, 3 Apr 2026 15:31:22 +0200 Subject: [PATCH] Simplify set_symetric_difference code --- .../segmented_set_symmetric_difference.hpp | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/include/boost/container/experimental/segmented_set_symmetric_difference.hpp b/include/boost/container/experimental/segmented_set_symmetric_difference.hpp index 25cfb5c..be702a4 100644 --- a/include/boost/container/experimental/segmented_set_symmetric_difference.hpp +++ b/include/boost/container/experimental/segmented_set_symmetric_difference.hpp @@ -43,14 +43,28 @@ struct set_symmetric_difference_default_less }; template -void set_symmetric_difference_scan(FwdIt first, FwdIt last, InIter2& first2, Sent2 last2, OutIter& result, Comp comp, +void set_symmetric_difference_scan(FwdIt first, FwdIt last, InIter2& first2_out, Sent2 last2, OutIter& result, Comp comp, non_segmented_iterator_tag) { + InIter2 first2 = first2_out; //Avoid aliasing issues while(first != last && first2 != last2) { - if (comp(*first, *first2)) { *result = *first; ++first; ++result; } - else if (comp(*first2, *first)) { *result = *first2; ++first2; ++result; } - else { ++first; ++first2; } + if (comp(*first, *first2)) { + *result = *first; + ++first; + ++result; + } + else { + if (comp(*first2, *first)) { + *result = *first2; + ++result; + } + else { + ++first; + } + ++first2; + } } + first2_out = first2; result = (segmented_copy)(first, last, result); }