Iros
 
Loading...
Searching...
No Matches
string_push_back.h
Go to the documentation of this file.
1#pragma once
2
7
8namespace di::container::string {
9template<concepts::detail::MutableString Str, typename Enc = meta::Encoding<Str>,
10 typename P = meta::EncodingCodePoint<Enc>>
11constexpr auto push_back(Str& string, P code_point) {
12 if constexpr (encoding::NullTerminated<Enc>) {
13 return invoke_as_fallible([&] {
14 return vector::append_container(string,
15 encoding::convert_to_code_units(string.encoding(), code_point));
16 }) >>
17 [&] {
18 return as_fallible(vector::emplace_back(string)) % [&](auto) {
19 vector::pop_back(string);
20 };
21 } |
23 } else {
24 return vector::append_container(string, encoding::convert_to_code_units(string.encoding(), code_point));
25 }
26}
27}
Definition encoding.h:25
constexpr auto convert_to_code_units
Definition encoding.h:139
Definition constant_string_interface.h:31
constexpr auto push_back(Str &string, P code_point)
Definition string_push_back.h:11
constexpr auto append_container(Vec &vector, Con &&container) -> R
Definition vector_append_container.h:21
constexpr auto pop_back(concepts::detail::MutableVector auto &vector)
Definition vector_pop_back.h:11
constexpr auto emplace_back(Vec &vector, Args &&... args) -> decltype(auto)
Definition vector_emplace_back.h:17
constexpr auto invoke_as_fallible
Definition invoke_as_fallible.h:37
constexpr auto as_fallible
Definition as_fallible.h:26
constexpr auto try_infallible
Definition try_infallible.h:31