is_pointer
Applicability
Product |
Supported |
|---|---|
Atlas 350 Accelerator Card |
√ |
√ |
|
√ |
|
x |
|
x |
|
x |
|
x |
Function Usage
Checks whether a type is the pointer type during program compilation. This API can be used for type checking and conditional processing during compilation.
Prototype
1 2 | template <typename Tp> struct is_pointer; |
Parameters
Parameter |
Description |
|---|---|
Tp |
Types to be checked, including basic types (such as int and float), composite types (such as array and function type), user-defined types (such as class and struct), and the pointer type |
Restrictions
None
Returns
The static constant member value of is_pointer is used to obtain the returned Boolean value. The values of is_pointer<Tp>::value are as follows:
- true: Tp is of the pointer type.
- false: Tp is not of the pointer 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 25 26 | // Custom test type struct MyStruct{int val;}; // Function type using FuncType = void(int); // Legitimate pointer types AscendC::printf("AscendC::Std::is_pointer::value:%d\n", AscendC::Std::is_pointer<int*>::value); AscendC::printf("AscendC::Std::is_pointer::value:%d\n", AscendC::Std::is_pointer<char**>::value); AscendC::printf("AscendC::Std::is_pointer::value:%d\n", AscendC::Std::is_pointer<void*>::value); AscendC::printf("AscendC::Std::is_pointer::value:%d\n", AscendC::Std::is_pointer<MyStruct*>::value); AscendC::printf("AscendC::Std::is_pointer::value:%d\n", AscendC::Std::is_pointer<int(*)[5]>::value); AscendC::printf("AscendC::Std::is_pointer::value:%d\n", AscendC::Std::is_pointer<void(*)(int)>::value); // Pointer types limited by CV AscendC::printf("AscendC::Std::is_pointer::value:%d\n", AscendC::Std::is_pointer<const int*>::value); AscendC::printf("AscendC::Std::is_pointer::value:%d\n", AscendC::Std::is_pointer<int* const>::value); AscendC::printf("AscendC::Std::is_pointer::value:%d\n", AscendC::Std::is_pointer<volatile char*>::value); // non-pointer types AscendC::printf("AscendC::Std::is_pointer::value:%d\n", AscendC::Std::is_pointer<int>::value); AscendC::printf("AscendC::Std::is_pointer::value:%d\n", AscendC::Std::is_pointer<int&>::value); AscendC::printf("AscendC::Std::is_pointer::value:%d\n", AscendC::Std::is_pointer<int[5]>::value); AscendC::printf("AscendC::Std::is_pointer::value:%d\n", AscendC::Std::is_pointer<double>::value); AscendC::printf("AscendC::Std::is_pointer::value:%d\n", AscendC::Std::is_pointer<MyStruct>::value); AscendC::printf("AscendC::Std::is_pointer::value:%d\n", AscendC::Std::is_pointer<FuncType>::value); AscendC::printf("AscendC::Std::is_pointer::value:%d\n", AscendC::Std::is_pointer<void>::value); |
// Execution result AscendC::Std::is_pointer::value:1 AscendC::Std::is_pointer::value:1 AscendC::Std::is_pointer::value:1 AscendC::Std::is_pointer::value:1 AscendC::Std::is_pointer::value:1 AscendC::Std::is_pointer::value:1 AscendC::Std::is_pointer::value:1 AscendC::Std::is_pointer::value:1 AscendC::Std::is_pointer::value:1 AscendC::Std::is_pointer::value:0 AscendC::Std::is_pointer::value:0 AscendC::Std::is_pointer::value:0 AscendC::Std::is_pointer::value:0 AscendC::Std::is_pointer::value:0 AscendC::Std::is_pointer::value:0 AscendC::Std::is_pointer::value:0