summaryrefslogtreecommitdiff
path: root/asl/types
diff options
context:
space:
mode:
authorSteven Le Rouzic <steven.lerouzic@gmail.com>2025-05-26 00:47:54 +0200
committerSteven Le Rouzic <steven.lerouzic@gmail.com>2025-05-26 00:48:06 +0200
commita1db1cd9e22e77041d5f1360f1d1ccdc52b86306 (patch)
treec1cc6dc9c17885a0789028f7a55c7126f33beee7 /asl/types
parent54b95b16629f0cd4bc30e6899e00019b3ab94012 (diff)
Implement chunked_buffer
Diffstat (limited to 'asl/types')
-rw-r--r--asl/types/array.hpp8
-rw-r--r--asl/types/maybe_uninit_tests.cpp4
2 files changed, 8 insertions, 4 deletions
diff --git a/asl/types/array.hpp b/asl/types/array.hpp
index 54c3fbe..1e722d9 100644
--- a/asl/types/array.hpp
+++ b/asl/types/array.hpp
@@ -12,7 +12,7 @@
namespace asl
{
-template<is_object T, int64_t kSize>
+template<is_object T, isize_t kSize>
requires (kSize > 0)
struct array
{
@@ -20,7 +20,7 @@ struct array
[[nodiscard]] constexpr bool is_empty() const { return false; }
- [[nodiscard]] constexpr int64_t size() const { return kSize; }
+ [[nodiscard]] constexpr isize_t size() const { return kSize; }
constexpr auto data(this auto&& self)
{
@@ -38,14 +38,14 @@ struct array
return contiguous_iterator{self.data() + kSize};
}
- template<int64_t kSpanSize>
+ template<isize_t kSpanSize>
requires (kSpanSize == kSize || kSpanSize == dynamic_size)
constexpr operator span<const T, kSpanSize>() const // NOLINT(*explicit*)
{
return as_span();
}
- template<int64_t kSpanSize>
+ template<isize_t kSpanSize>
requires (kSpanSize == kSize || kSpanSize == dynamic_size)
constexpr operator span<T, kSpanSize>() // NOLINT(*explicit*)
{
diff --git a/asl/types/maybe_uninit_tests.cpp b/asl/types/maybe_uninit_tests.cpp
index a525423..a4a851b 100644
--- a/asl/types/maybe_uninit_tests.cpp
+++ b/asl/types/maybe_uninit_tests.cpp
@@ -10,6 +10,8 @@ static_assert(asl::size_of<int> == asl::size_of<asl::maybe_uninit<int>>);
static_assert(asl::align_of<int> == asl::align_of<asl::maybe_uninit<int>>);
#define TEST_TYPE_PROPERTIES(PRP) \
+ static_assert(asl::PRP<asl::maybe_uninit<int>> == asl::PRP<int>); \
+ static_assert(asl::PRP<asl::maybe_uninit<void*>> == asl::PRP<void*>); \
static_assert(asl::PRP<asl::maybe_uninit<TrivialType>> == asl::PRP<TrivialType>); \
static_assert(asl::PRP<asl::maybe_uninit<TrivialTypeDefaultValue>> == asl::PRP<TrivialTypeDefaultValue>); \
static_assert(asl::PRP<asl::maybe_uninit<WithDestructor>> == asl::PRP<WithDestructor>); \
@@ -17,6 +19,8 @@ static_assert(asl::align_of<int> == asl::align_of<asl::maybe_uninit<int>>);
static_assert(asl::PRP<asl::maybe_uninit<MoveableOnly>> == asl::PRP<MoveableOnly>); \
static_assert(asl::PRP<asl::maybe_uninit<Pinned>> == asl::PRP<Pinned>);
+// @Todo(C++26) We expect this to break once trivial unions land.
+// https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3074r7.html#just-make-it-work
TEST_TYPE_PROPERTIES(trivially_default_constructible);
TEST_TYPE_PROPERTIES(trivially_copy_constructible);
TEST_TYPE_PROPERTIES(trivially_move_constructible);