Files
cppdraft_translate/cppdraft/meta/trans/arr.md
2025-10-25 03:02:53 +03:00

2.3 KiB
Raw Blame History

[meta.trans.arr]

21 Metaprogramming library [meta]

21.3 Metaprogramming and type traits [type.traits]

21.3.9 Transformations between types [meta.trans]

21.3.9.5 Array modifications [meta.trans.arr]

1

#

The templates specified in Table 60 modify array types.

Table 60 — Array modifications [tab:meta.trans.arr]

🔗
Template
Comments
🔗
template struct remove_extent;
If T is a type “array of U”, the member typedef type denotes U, otherwise T.
[Note 1:
For multidimensional arrays, only the first array dimension is removed.
For a type “array of const U”, the resulting type is const U. — end note]
🔗
template struct remove_all_extents;
If T is “multidimensional array of U”, the resulting member typedef type denotes U, otherwise T.

2

#

[Example 1: // the following assertions hold:static_assert(is_same_v<remove_extent_t, int>);static_assert(is_same_v<remove_extent_t<int[2]>, int>);static_assert(is_same_v<remove_extent_t<int[2][3]>, int[3]>);static_assert(is_same_v<remove_extent_t<int[][3]>, int[3]>); — end example]

3

#

[Example 2: // the following assertions hold:static_assert(is_same_v<remove_all_extents_t, int>);static_assert(is_same_v<remove_all_extents_t<int[2]>, int>);static_assert(is_same_v<remove_all_extents_t<int[2][3]>, int>);static_assert(is_same_v<remove_all_extents_t<int[][3]>, int>); — end example]