std::extent
Материал из 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, unsigned N = 0> struct extent; |
(начиная с C++11) | |
If T is an array type, provides the member constant value equal to the number of elements along the Nth dimension of the array, if N is in [0, std::rank<T>::value). For any other type, or if T is array of unknown bound along its first dimension and N is 0, value is 0.
Содержание |
Унаследован от std::integral_constant
Member constants
| value [static] |
the number of elements along the Nth dimension of T (public static константа-член) |
Member functions
| operator std::size_t |
преобразует объект в std::size_t, возвращает value Original: converts the object to std::size_t, returns value The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (public функция-член) |
Member types
| Type
Original: Type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Definition |
value_type
|
std::size_t
|
type
|
std::integral_constant<std::size_t, value> |
[править] Возможная реализация
template<class T, unsigned N = 0> struct extent : std::integral_constant<std::size_t, 0> {}; template<class T> struct extent<T[], 0> : std::integral_constant<std::size_t, 0> {}; template<class T, unsigned N> struct extent<T[], N> : std::integral_constant<std::size_t, std::extent<T, N-1>::value> {}; template<class T, std::size_t N> struct extent<T[N], 0> : std::integral_constant<std::size_t, N> {}; template<class T, std::size_t I, unsigned N> struct extent<T[I], N> : std::integral_constant<std::size_t, std::extent<T, N-1>::value> {}; |
[править] Пример
#include <iostream> #include <type_traits> int main() { std::cout << std::extent<int[3]>::value << '\n'; std::cout << std::extent<int[3][4]>::value << '\n'; std::cout << std::extent<int[3][4],1>::value << '\n'; std::cout << std::extent<int[3][4],2>::value << '\n'; std::cout << std::extent<int[]>::value << '\n'; }
Вывод:
3 3 4 0 0
[править] См. также
| (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: 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. (шаблон класса) |
| (C++11) |
removes all extents from the given array type (шаблон класса) |