8 struct FixedStringConcat;
11template<types::
size_t count>
23 constexpr auto data() const ->
char const* {
return m_data; }
26 constexpr auto empty()
const {
return size() == 0; }
28 constexpr auto begin() const ->
char const* {
return m_data; }
31 template<types::
size_t other_size>
32 requires(
count != other_size)
40 friend struct detail::FixedStringConcat;
43template<types::
size_t size>
47 struct FixedStringConcat {
49 template<
size_t s0,
size_t s1>
52 for (
size_t i = 0; i < s0; i++) {
53 result.m_data[i] = a.
m_data[i];
55 for (
size_t i = 0; i < s1; i++) {
56 result.m_data[s0 + i] = b.
m_data[i];
62 template<
size_t sz0,
size_t... sz>
65 return h(s0, FixedStringConcat::operator()(strs...));
68 constexpr static auto operator()() ->
FixedString<0> {
return { {} }; }
Definition fixed_string.h:12
constexpr auto data() const -> char const *
Definition fixed_string.h:23
constexpr FixedString(char const (&data)[count+1])
Definition fixed_string.h:16
auto operator<=>(FixedString const &) const =default
auto operator==(FixedString const &) const -> bool=default
constexpr auto end() const -> char const *
Definition fixed_string.h:29
static constexpr auto size()
Definition fixed_string.h:24
constexpr auto empty() const
Definition fixed_string.h:26
char m_data[count+1]
Definition fixed_string.h:14
constexpr auto begin() const -> char const *
Definition fixed_string.h:28
constexpr auto fixed_string_concat
Definition fixed_string.h:72
FixedString(char const (&)[size]) -> FixedString< size - 1 >
constexpr auto size
Definition size.h:62
constexpr auto count
Definition count.h:37
std::size_t size_t
Definition size_t.h:12
Definition any_storable.h:9