#pragma once #include #include #include // statically allocates a string buffer of (N+1) chars template < size_t N > class StaticString { public: constexpr StaticString() = default; constexpr StaticString(const char * str) { std::strncpy(m_str.data(), str, N); } void operator=(const char * str) { std::strncpy(m_str.data(), str, N); } const char * c_str() const noexcept { return &m_str[0]; } const char * data() const noexcept { return &m_str[0]; } std::size_t size() const { return strlen(m_str.data()); } private: std::array< char, N + 1 > m_str{}; };