basedOpinionated utility library |
git clone git://git.dimitrijedobrota.com/based.git |
Log | Files | Refs | README | LICENSE | HACKING | CONTRIBUTING | CODE_OF_CONDUCT | BUILDING |
literal.hpp (609B)
0 #pragma once
2 #include <array>
3 #include <cstddef>
4 #include <string_view>
6 namespace based
7 {
9 template<std::size_t n>
10 struct StringLiteral
11 {
12 // NOLINTNEXTLINE(*explicit*, *array*)
13 constexpr StringLiteral(const char (&str)[n])
14 : m_value(std::to_array(str))
15 {
16 }
18 // NOLINTNEXTLINE(*explicit*)
19 [[nodiscard]] constexpr operator std::string_view() const
20 {
21 return {data(), size()};
22 }
24 [[nodiscard]] constexpr std::size_t size() const { return n - 1; }
25 [[nodiscard]] constexpr const char* data() const { return m_value.data(); }
27 std::array<char, n> m_value;
28 };
30 } // namespace based