27ResultString
StrCat(
const Strings&... strings) {
28 return [](
auto... string_views) {
29 std::size_t result_size = 0;
30 ((result_size += string_views.size()), ...);
33 result.reserve(result_size);
34 (result.append(string_views), ...);
36 }(std::string_view{strings}...);
105 if constexpr (std::is_rvalue_reference_v<
decltype(container)>) {
107 std::make_move_iterator(std::ranges::begin(container)),
108 std::make_move_iterator(std::ranges::end(container))
111 return ToContainer(std::ranges::begin(container), std::ranges::end(container));
138 if constexpr (impl::HasKeyType<Container>) {
139 auto old_size = std::ranges::size(container);
140 for (
auto it = std::ranges::begin(container), last = std::ranges::end(container); it != last;) {
142 it = container.erase(it);
147 return old_size - std::ranges::size(container);
149 auto garbage = std::ranges::remove_if(container, pred);
150 container.erase(garbage.begin(), garbage.end());
151 return std::ranges::size(garbage);
158 if constexpr (impl::HasKeyType<Container>) {
159 return container.erase(elem);
162 auto garbage = std::ranges::remove(container, elem);
163 container.erase(garbage.begin(), garbage.end());
164 return std::ranges::size(garbage);