13 consteval FixedString()
noexcept =
default;
14 consteval FixedString(std::string_view s)
noexcept { std::copy_n(s.data(), std::min(s.size(), N), buf); }
15 consteval FixedString(
char const* s) noexcept : FixedString(std::string_view{s}) {}
17 constexpr operator std::string_view()
const noexcept {
return buf; }
19 constexpr char const* c_str()
const noexcept {
return buf; }
20 constexpr std::string_view sv()
const noexcept {
return buf; }
21 constexpr std::string str()
const noexcept {
return buf; }
23 [[nodiscard]]
constexpr char const& operator[](
size_t idx)
const noexcept {
return buf[idx]; }
24 [[nodiscard]]
constexpr char& operator[](
size_t idx)
noexcept {
return buf[idx]; }
25 [[nodiscard]]
constexpr char const* data()
const {
return buf; }
26 [[nodiscard]]
constexpr char* data() {
return buf; }
28 constexpr size_t size()
const {
return N; }
32 consteval auto operator+(FixedString<Ny>
const& other)
noexcept {
33 FixedString<N + Ny> res{};
34 std::copy_n(buf, N, res.buf);
35 std::copy_n(other.buf, Ny, N + res.buf);