diff --git a/include/boost/container/experimental/segmented_set_difference.hpp b/include/boost/container/experimental/segmented_set_difference.hpp index a7ef8e5..d3ed118 100644 --- a/include/boost/container/experimental/segmented_set_difference.hpp +++ b/include/boost/container/experimental/segmented_set_difference.hpp @@ -21,6 +21,7 @@ #include #include #include +#include namespace boost { namespace container { @@ -38,7 +39,7 @@ namespace detail_algo { struct set_difference_default_less { template - bool operator()(const T& a, const T& b) const { return a < b; } + BOOST_CONTAINER_FORCEINLINE bool operator()(const T& a, const T& b) const { return a < b; } }; template @@ -50,7 +51,7 @@ void set_difference_scan(FwdIt first, FwdIt last, InIter2& first2, Sent2 last2, else if(comp(*first2, *first)) { ++first2; } else { ++first; ++first2; } } - for(; first != last; ++first, ++result) *result = *first; + result = (segmented_copy)(first, last, result); } template @@ -78,7 +79,7 @@ void set_difference_scan(SegIt first, SegIt last, InIter2& first2, Sent2 last2, } template -OutIter segmented_set_difference_dispatch +BOOST_CONTAINER_FORCEINLINE OutIter segmented_set_difference_dispatch (SegIter first1, SegIter last1, InIter2 first2, Sent2 last2, OutIter result, Comp comp, segmented_iterator_tag) { set_difference_scan(first1, last1, first2, last2, result, comp, segmented_iterator_tag()); @@ -103,7 +104,7 @@ segmented_set_difference_dispatch } // namespace detail_algo template -inline OutIter segmented_set_difference +BOOST_CONTAINER_FORCEINLINE OutIter segmented_set_difference (InIter1 first1, Sent1 last1, InIter2 first2, Sent2 last2, OutIter result, Comp comp) { typedef segmented_iterator_traits traits; diff --git a/include/boost/container/experimental/segmented_set_symmetric_difference.hpp b/include/boost/container/experimental/segmented_set_symmetric_difference.hpp index 2adfb63..05ef729 100644 --- a/include/boost/container/experimental/segmented_set_symmetric_difference.hpp +++ b/include/boost/container/experimental/segmented_set_symmetric_difference.hpp @@ -21,6 +21,7 @@ #include #include #include +#include namespace boost { namespace container { @@ -50,7 +51,7 @@ void set_symmetric_difference_scan(FwdIt first, FwdIt last, InIter2& first2, Sen else if(comp(*first2, *first)) { *result = *first2; ++first2; ++result; } else { ++first; ++first2; } } - for(; first != last; ++first, ++result) *result = *first; + result = (segmented_copy)(first, last, result); } template @@ -106,7 +107,7 @@ segmented_set_symmetric_difference_dispatch } // namespace detail_algo template -inline OutIter segmented_set_symmetric_difference +BOOST_CONTAINER_FORCEINLINE OutIter segmented_set_symmetric_difference (InIter1 first1, Sent1 last1, InIter2 first2, Sent2 last2, OutIter result, Comp comp) { typedef segmented_iterator_traits traits; @@ -115,7 +116,7 @@ inline OutIter segmented_set_symmetric_difference } template -inline OutIter segmented_set_symmetric_difference +BOOST_CONTAINER_FORCEINLINE OutIter segmented_set_symmetric_difference (InIter1 first1, Sent1 last1, InIter2 first2, Sent2 last2, OutIter result) { return boost::container::segmented_set_symmetric_difference(first1, last1, first2, last2, result,