feat: custom implementation of swap_ranges added

This commit is contained in:
Mateusz Pusz
2024-05-28 09:41:25 +02:00
parent 602a609995
commit 411d7d5c50
2 changed files with 15 additions and 1 deletions

View File

@@ -131,4 +131,18 @@ constexpr OutputIt copy(InputIt first, InputIt last, OutputIt d_first)
return d_first; return d_first;
} }
template<class ForwardIt1, class ForwardIt2>
constexpr void iter_swap(ForwardIt1 a, ForwardIt2 b)
{
using std::swap;
swap(*a, *b);
}
template<class ForwardIt1, class ForwardIt2>
constexpr ForwardIt2 swap_ranges(ForwardIt1 first1, ForwardIt1 last1, ForwardIt2 first2)
{
for (; first1 != last1; ++first1, ++first2) iter_swap(first1, first2);
return first2;
}
} // namespace mp_units::detail } // namespace mp_units::detail

View File

@@ -141,7 +141,7 @@ public:
} }
// modifiers // modifiers
constexpr void swap(basic_fixed_string& s) noexcept { std::swap_ranges(begin(), end(), s.begin()); } constexpr void swap(basic_fixed_string& s) noexcept { swap_ranges(begin(), end(), s.begin()); }
// string operations // string operations
[[nodiscard]] constexpr const_pointer c_str() const noexcept { return data(); } [[nodiscard]] constexpr const_pointer c_str() const noexcept { return data(); }