std::remove_all_extents
Материал из cppreference.com
|
|
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
| Заголовочный файл <type_traits>
|
||
| template< class T > struct remove_all_extents; |
(начиная с C++11) | |
Если
T является многомерный массив определенного типа X, обеспечивает членов ЬурейеЕ type равно X, в противном случае type является T.Original:
If
T is a multidimensional array of some type X, provides the member typedef type equal to X, otherwise type is T.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Содержание |
[править] Член типов
| Имя
Original: Name The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Definition |
type
|
Тип элемента
T Original: the type of the element of T The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
[править] Возможная реализация
template<class T> struct remove_all_extents { typedef T type;}; template<class T> struct remove_all_extents<T[]> { typedef typename remove_all_extents<T>::type type; }; template<class Tp, std::size_t N> struct remove_all_extents<T[N]> { typedef typename remove_all_extents<T>::type type; }; |
[править] Пример
#include <iostream> #include <type_traits> #include <typeinfo> template<class A> void foo(const A&) { typedef typename std::remove_all_extents<A>::type Type; std::cout << "underlying type: " << typeid(Type).name() << '\n'; } int main() { float a1[1][2][3]; int a2[3][2]; float a3[1][1][1][1][2]; double a4[2][3]; foo(a1); foo(a2); foo(a3); foo(a4); }
Вывод:
underlying type: f underlying type: i underlying type: f underlying type: d
[править] См. также
| (C++11) |
проверяет, является ли тип является типом массива Original: checks if a type is an array type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (шаблон класса) |
| (C++11) |
получает число измерений массива Original: obtains the number of dimensions of an array type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (шаблон класса) |
| (C++11) |
получает размер массива типа по указанному измерению Original: obtains the size of an array type along a specified dimension The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (шаблон класса) |
| (C++11) |
удаляет одну степень от данного типа массива Original: removes one extent from the given array type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (шаблон класса) |