tuple_size : check size for various tuples and their cv‑qualified variants
| 24 | |
| 25 | //tuple_size : check size for various tuples and their cv‑qualified variants |
| 26 | TEST(TupleSize, BasicAndCV) |
| 27 | { |
| 28 | using Empty = rocprim::tuple<>; |
| 29 | using Single = rocprim::tuple<int>; |
| 30 | using Mixed = rocprim::tuple<int, double, char>; |
| 31 | |
| 32 | // Compile time assertions |
| 33 | static_assert(rocprim::tuple_size<Empty>::value == 0, ""); |
| 34 | static_assert(rocprim::tuple_size<Single>::value == 1, ""); |
| 35 | static_assert(rocprim::tuple_size<Mixed>::value == 3, ""); |
| 36 | |
| 37 | // const/ volatile specific, cv‑qualified tuples must report the same size |
| 38 | static_assert(rocprim::tuple_size<const Mixed>::value == 3, ""); |
| 39 | static_assert(rocprim::tuple_size<volatile Mixed>::value == 3, ""); |
| 40 | static_assert(rocprim::tuple_size<const volatile Mixed>::value == 3, ""); |
| 41 | |
| 42 | // Runtime assertions |
| 43 | EXPECT_EQ(rocprim::tuple_size<Mixed>::value, 3u); |
| 44 | } |
| 45 | |
| 46 | // get<I> : read / write / cv‑correctness |
| 47 | TEST(Get, ValueAndReference) |