23 General utilities library [utilities]

23.15 Metaprogramming and type traits [meta]

23.15.7 Transformations between types [meta.trans]

23.15.7.4 Array modifications [meta.trans.arr]

Таблица 48 - Модификации массива
ШаблонКомментарии
template <class T>
struct remove_­extent;
Если T тип именуется «массив из U», то в противном случае type должен быть член typedef . [ Для многомерных массивов удаляется только первое измерение массива. Для типа «массив » результирующий тип будет . ] U TNote: const U const U end note
template <class T>
struct remove_­all_­extents;
Если T это «многомерный массив из U», результирующий typedef члена type будет U, в противном случае T.

[Example:

// the following assertions hold:
assert((is_same_v<remove_extent_t<int>, int>));
assert((is_same_v<remove_extent_t<int[2]>, int>));
assert((is_same_v<remove_extent_t<int[2][3]>, int[3]>));
assert((is_same_v<remove_extent_t<int[][3]>, int[3]>));

end example]

[Example:

// the following assertions hold:
assert((is_same_v<remove_all_extents_t<int>, int>));
assert((is_same_v<remove_all_extents_t<int[2]>, int>));
assert((is_same_v<remove_all_extents_t<int[2][3]>, int>));
assert((is_same_v<remove_all_extents_t<int[][3]>, int>));

end example]