is_integral
Applicability
Product |
Supported |
|---|---|
Atlas 350 Accelerator Card |
√ |
√ |
|
√ |
|
x |
|
x |
|
x |
|
x |
Function Usage
Checks whether a type is the integer type during program compilation. This API can be used for type checking and conditional processing during compilation.
Prototype
1 2 | template <typename T> struct is_integral; |
Parameters
Parameter |
Description |
|---|---|
T |
Types to be checked, including basic data types and modifier types |
Restrictions
None
Returns
The static constant member value of is_integral is used to obtain the returned Boolean value. The values of is_integral<T>::value are as follows:
- true: Tp is of the array type.
- false: Tp is not of the array type.
Examples
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | // Custom test type struct MyStruct{}; using FuncType = int(int); // legal integer type AscendC::printf("AscendC::Std::is_integral::value:%d\n", AscendC::Std::is_integral<bool>::value); AscendC::printf("AscendC::Std::is_integral::value:%d\n", AscendC::Std::is_integral<char>::value); AscendC::printf("AscendC::Std::is_integral::value:%d\n", AscendC::Std::is_integral<int>::value); AscendC::printf("AscendC::Std::is_integral::value:%d\n", AscendC::Std::is_integral<long long>::value); AscendC::printf("AscendC::Std::is_integral::value:%d\n", AscendC::Std::is_integral<unsigned int>::value); // Integer type limited by CV AscendC::printf("AscendC::Std::is_integral::value:%d\n", AscendC::Std::is_integral<const int>::value); AscendC::printf("AscendC::Std::is_integral::value:%d\n", AscendC::Std::is_integral<volatile long>::value); // non-integer type AscendC::printf("AscendC::Std::is_integral::value:%d\n", AscendC::Std::is_integral<float>::value); AscendC::printf("AscendC::Std::is_integral::value:%d\n", AscendC::Std::is_integral<double>::value); AscendC::printf("AscendC::Std::is_integral::value:%d\n", AscendC::Std::is_integral<int*>::value); AscendC::printf("AscendC::Std::is_integral::value:%d\n", AscendC::Std::is_integral<int&>::value); AscendC::printf("AscendC::Std::is_integral::value:%d\n", AscendC::Std::is_integral<int[5]>::value); AscendC::printf("AscendC::Std::is_integral::value:%d\n", AscendC::Std::is_integral<FuncType>::value); AscendC::printf("AscendC::Std::is_integral::value:%d\n", AscendC::Std::is_integral<MyStruct>::value); AscendC::printf("AscendC::Std::is_integral::value:%d\n", AscendC::Std::is_integral<void>::value); |
// Execution result AscendC::Std::is_integral::value:1 AscendC::Std::is_integral::value:1 AscendC::Std::is_integral::value:1 AscendC::Std::is_integral::value:1 AscendC::Std::is_integral::value:1 AscendC::Std::is_integral::value:1 AscendC::Std::is_integral::value:1 AscendC::Std::is_integral::value:0 AscendC::Std::is_integral::value:0 AscendC::Std::is_integral::value:0 AscendC::Std::is_integral::value:0 AscendC::Std::is_integral::value:0 AscendC::Std::is_integral::value:0 AscendC::Std::is_integral::value:0 AscendC::Std::is_integral::value:0
Parent topic: Type Traits