util/SpanCast: add ReferenceAsBytes()

This commit is contained in:
Max Kellermann 2023-10-21 13:33:25 +02:00 committed by Max Kellermann
parent 10940da381
commit a073db1e52
3 changed files with 12 additions and 2 deletions

View File

@ -51,7 +51,7 @@ public:
*/ */
template<typename T> template<typename T>
void WriteT(const T &value) { void WriteT(const T &value) {
Write(std::as_bytes(std::span{&value, 1})); Write(ReferenceAsBytes(value));
} }
/** /**

View File

@ -105,7 +105,7 @@ template<typename T>
static bool static bool
SendT(SocketDescriptor s, const T &buffer) noexcept SendT(SocketDescriptor s, const T &buffer) noexcept
{ {
return Send(s, std::as_bytes(std::span{&buffer, 1})); return Send(s, ReferenceAsBytes(buffer));
} }
static bool static bool

View File

@ -59,6 +59,16 @@ AsBytes(std::string_view sv) noexcept
return std::as_bytes(ToSpan(sv)); return std::as_bytes(ToSpan(sv));
} }
/**
* Cast a reference to a fixed-size std::span<const std::byte>.
*/
template<typename T>
constexpr auto
ReferenceAsBytes(const T &value) noexcept
{
return std::as_bytes(std::span<const T, 1>{&value, 1});
}
constexpr std::string_view constexpr std::string_view
ToStringView(std::span<const char> s) noexcept ToStringView(std::span<const char> s) noexcept
{ {