// Copyright 2025 Steven Le Rouzic // // SPDX-License-Identifier: BSD-3-Clause #include "asl/types/maybe_uninit.hpp" #include "asl/tests/types.hpp" static_assert(asl::layout::of() == asl::layout::of>()); static_assert(asl::size_of == asl::size_of>); static_assert(asl::align_of == asl::align_of>); #define TEST_TYPE_PROPERTIES(PRP) \ static_assert(asl::PRP> == asl::PRP); \ static_assert(asl::PRP> == asl::PRP); \ static_assert(asl::PRP> == asl::PRP); \ static_assert(asl::PRP> == asl::PRP); \ static_assert(asl::PRP> == asl::PRP); \ static_assert(asl::PRP> == asl::PRP); \ static_assert(asl::PRP> == asl::PRP); \ static_assert(asl::PRP> == asl::PRP); // @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); TEST_TYPE_PROPERTIES(trivially_copy_assignable); TEST_TYPE_PROPERTIES(trivially_move_assignable); TEST_TYPE_PROPERTIES(trivially_destructible); static_assert(asl::same_as&>().as_init_unsafe())>); static_assert(asl::same_as&&>().as_init_unsafe())>); static_assert(asl::same_as&>().as_init_unsafe())>); static_assert(asl::same_as>().as_init_unsafe())>); static_assert(asl::same_as>().as_init_unsafe())>);