Use std::array for location_wrapper::scratch_buffer

This commit is contained in:
Kp 2022-09-24 17:47:52 +00:00
parent ae5e5c699a
commit a76f5d9248

View file

@ -54,7 +54,7 @@ class location_wrapper<true>
unsigned line; unsigned line;
public: public:
template <std::size_t N> template <std::size_t N>
using scratch_buffer = char[N]; using scratch_buffer = std::array<char, N>;
location_wrapper(const char *const f = __builtin_FILE(), const unsigned l = __builtin_LINE()) : location_wrapper(const char *const f = __builtin_FILE(), const unsigned l = __builtin_LINE()) :
file(f), line(l) file(f), line(l)
{ {
@ -72,7 +72,7 @@ public:
* without accessing undefined bytes. * without accessing undefined bytes.
*/ */
template <std::size_t N> template <std::size_t N>
std::span<const char> prepare_buffer(char (&buffer)[N], const char *const text, const std::size_t len) const std::span<const char> prepare_buffer(std::array<char, N> &buffer, const char *const text, const std::size_t len) const
{ {
const auto written = std::snprintf(buffer, sizeof(buffer), "%s:%u: %.*s", file, line, static_cast<int>(len), text); const auto written = std::snprintf(buffer, sizeof(buffer), "%s:%u: %.*s", file, line, static_cast<int>(len), text);
return {buffer, written}; return {buffer, written};
@ -82,7 +82,7 @@ public:
* overload for the function to receive this result. * overload for the function to receive this result.
*/ */
template <std::size_t N> template <std::size_t N>
std::span<char> prepare_buffer(char (&buffer)[N], char *const text, const std::size_t len) const std::span<char> prepare_buffer(std::array<char, N> &buffer, char *const text, const std::size_t len) const
{ {
return {buffer, prepare_buffer(buffer, const_cast<const char *>(text), len).size()}; return {buffer, prepare_buffer(buffer, const_cast<const char *>(text), len).size()};
} }