diff options
author | Steven Le Rouzic <steven.lerouzic@gmail.com> | 2025-05-26 00:47:54 +0200 |
---|---|---|
committer | Steven Le Rouzic <steven.lerouzic@gmail.com> | 2025-05-26 00:48:06 +0200 |
commit | a1db1cd9e22e77041d5f1360f1d1ccdc52b86306 (patch) | |
tree | c1cc6dc9c17885a0789028f7a55c7126f33beee7 /asl/types | |
parent | 54b95b16629f0cd4bc30e6899e00019b3ab94012 (diff) |
Implement chunked_buffer
Diffstat (limited to 'asl/types')
-rw-r--r-- | asl/types/array.hpp | 8 | ||||
-rw-r--r-- | asl/types/maybe_uninit_tests.cpp | 4 |
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); |