Generalize `join`
join
previously required operator+
to append. It also required the final storage type to be equal to the result type of operator+
. This prevents some important use cases -- for instance, joining a range of std::string_view
with a std::string_view
separator.
Instead, join
now requires the user to pass in the target type. Implement concatenation with the .append(iterator, iterator)
member function of the target type.
Add unit tests for this new join implementation. This adds Catch2 as a dependency to implement these unit tests.