"Error");
// Deleted members in unions with non-trivial members:
+#if __cpp_trivial_union >= 202502L
+static_assert(std::is_constructible<NontrivialUnion>::value, "Error");
+#else
static_assert(!std::is_constructible<NontrivialUnion>::value, "Error");
+#endif
static_assert(!std::is_constructible<NontrivialUnion,
const NontrivialUnion&>::value, "Error");
static_assert(!std::is_destructible<const Del[]>::value, "Error");
// Deleted members in unions with non-trivial members:
+#if __cpp_trivial_union >= 202502L
+static_assert(std::is_destructible<NontrivialUnion>::value, "Error");
+#else
static_assert(!std::is_destructible<NontrivialUnion>::value, "Error");
+#endif
// Unusual copy:
static_assert(std::is_destructible<UnusualCopy>::value, "Error");
static_assert(!std::is_nothrow_destructible<Aggr2>::value, "Error");
static_assert(!std::is_nothrow_destructible<Aggr2[1]>::value, "Error");
static_assert(!std::is_nothrow_destructible<TD1[1][2]>::value, "Error");
+#if __cpp_trivial_union >= 202502L
+static_assert(std::is_nothrow_destructible<Ut>::value, "Error");
+static_assert(std::is_nothrow_destructible<Ut[3]>::value, "Error");
+#else
static_assert(!std::is_nothrow_destructible<Ut>::value, "Error");
static_assert(!std::is_nothrow_destructible<Ut[3]>::value, "Error");
+#endif
static_assert(!std::is_nothrow_destructible<AbstractDelDtor>::value, "Error");
static_assert(!std::is_nothrow_destructible<Abstract2>::value, "Error");
static_assert(!std::is_nothrow_destructible<Abstract3>::value, "Error");