Type traits | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Compile-time rational arithmetic | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Compile-time integer sequences | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(C++14) |
Defined in header <type_traits> | ||
template<class T> struct is_bounded_array; | (since C++20) | |
std::is_bounded_array
is aUnaryTypeTrait.
Checks whetherT
is an array type of known bound. Provides the member constantvalue
which is equal totrue, ifT
is an array type of known bound. Otherwise,value
is equal tofalse.
If the program adds specializations forstd::is_bounded_array
orstd::is_bounded_array_v
, the behavior is undefined.
Contents |
T | - | a type to check |
template<class T> constexprbool is_bounded_array_v= is_bounded_array<T>::value; | (since C++20) | |
value [static] | true ifT is an array type of known bound,false otherwise(public static member constant) |
operator bool | converts the object tobool, returnsvalue (public member function) |
operator() (C++14) | returnsvalue (public member function) |
Type | Definition |
value_type | bool |
type | std::integral_constant<bool, value> |
template<class T>struct is_bounded_array:std::false_type{}; template<class T,std::size_t N>struct is_bounded_array<T[N]>:std::true_type{}; |
Feature-test macro | Value | Std | Feature |
---|---|---|---|
__cpp_lib_bounded_array_traits | 201902L | (C++20) | std::is_bounded_array ,std::is_unbounded_array |
#include <iostream>#include <type_traits> #define OUT(...) std::cout << #__VA_ARGS__ << " : " << __VA_ARGS__ << '\n' class A{}; int main(){std::cout<<std::boolalpha; OUT(std::is_bounded_array_v<A>); OUT(std::is_bounded_array_v<A[]>); OUT(std::is_bounded_array_v<A[3]>); OUT(std::is_bounded_array_v<float>); OUT(std::is_bounded_array_v<int>); OUT(std::is_bounded_array_v<int[]>); OUT(std::is_bounded_array_v<int[3]>);}
Output:
std::is_bounded_array_v<A> : falsestd::is_bounded_array_v<A[]> : falsestd::is_bounded_array_v<A[3]> : truestd::is_bounded_array_v<float> : falsestd::is_bounded_array_v<int> : falsestd::is_bounded_array_v<int[]> : falsestd::is_bounded_array_v<int[3]> : true
(C++11) | checks if a type is an array type (class template)[edit] |
(C++20) | checks if a type is an array type of unknown bound (class template)[edit] |
(C++11) | obtains the size of an array type along a specified dimension (class template)[edit] |