34 using value_type = CharT;
45 template<std::
size_t O>
46 constexpr basic_fixed_string(value_type
const (&str)[O])
noexcept requires((O - 1) == N) : _str{}
48 for (
auto i = 0_uz; i != (O - 1); ++i) {
53 template<std::
size_t O>
54 constexpr basic_fixed_string& operator=(value_type
const (&str)[O])
noexcept requires((O - 1) == N)
57 for (; i != (O - 1); ++i) {
61 _str[i] = value_type{};
66 constexpr operator std::basic_string_view<value_type>()
const noexcept
68 return std::basic_string_view<value_type>{_str.
data(), size()};
71 [[nodiscard]]
constexpr std::size_t size()
const noexcept
76 [[nodiscard]]
constexpr auto begin()
noexcept
81 [[nodiscard]]
constexpr auto end()
noexcept
83 return _str.
begin() + size();
88 [[nodiscard]]
constexpr bool operator==(
basic_fixed_string const& rhs)
const noexcept =
default;
89 [[nodiscard]]
constexpr auto operator<=>(
basic_fixed_string const& rhs)
const noexcept =
default;
100 return static_cast<std::basic_string_view<CharT>
>(*this) <=>
static_cast<std::basic_string_view<CharT>
>(rhs);
103 [[nodiscard]]
constexpr bool operator==(std::basic_string_view<CharT> rhs)
const noexcept
105 return static_cast<std::basic_string_view<CharT>
>(*this) == rhs;
108 [[nodiscard]]
constexpr auto operator<=>(std::basic_string_view<CharT> rhs)
const noexcept
110 return static_cast<std::basic_string_view<CharT>
>(*this) <=> rhs;
131struct std::formatter<hi::basic_fixed_string<T, N>, CharT> : std::formatter<T const *, CharT> {
132 auto format(hi::basic_fixed_string<T, N>
const& t,
auto& fc)
134 return std::formatter<T const *, CharT>::format(t.data(), fc);