From eb58edf811a328ddcc5e671a258be208da212630 Mon Sep 17 00:00:00 2001 From: Steven Le Rouzic Date: Fri, 3 Jan 2025 01:22:21 +0100 Subject: Add string --- asl/buffer.hpp | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) (limited to 'asl/buffer.hpp') diff --git a/asl/buffer.hpp b/asl/buffer.hpp index eab0a2e..90bfc96 100644 --- a/asl/buffer.hpp +++ b/asl/buffer.hpp @@ -191,10 +191,23 @@ private: public: constexpr buffer() requires default_constructible = default; + + explicit constexpr buffer(span s) + requires default_constructible + : buffer{} + { + copy_range(s); + } explicit constexpr buffer(Allocator allocator) : m_allocator{ASL_MOVE(allocator)} {} + + explicit constexpr buffer(span s, Allocator allocator) + : m_allocator{ASL_MOVE(allocator)} + { + copy_range(s); + } constexpr buffer(const buffer& other) requires copy_constructible && copyable @@ -344,12 +357,22 @@ public: } // @Todo(C++23) Deducing this - operator span() const // NOLINT(*-explicit-conversions) + constexpr operator span() const // NOLINT(*-explicit-conversions) + { + return as_span(); + } + + constexpr operator span() // NOLINT(*-explicit-conversions) + { + return as_span(); + } + + constexpr span as_span() const { return span{data(), size()}; } - operator span() // NOLINT(*-explicit-conversions) + constexpr span as_span() { return span{data(), size()}; } -- cgit