::value"等于 false?-6ren"> ::value"等于 false?-我读到了 std::is_pointer在 C++ 中。 然后我写了程序,检查是否T是指针类型或不使用 std::is_pointer . #include int main() { std-6ren">
gpt4 book ai didi

c++ - 为什么 "std::is_pointer::value"等于 false?

转载 作者:可可西里 更新时间:2023-11-01 18:02:07 25 4
gpt4 key购买 nike

我读到了 std::is_pointer在 C++ 中。

然后我写了程序,检查是否T是指针类型或不使用 std::is_pointer .

#include <iostream>

int main()
{
std::cout<<std::boolalpha;
std::cout<<"char : " <<std::is_pointer<char>::value<<std::endl; // OK
std::cout<<"char * : "<<std::is_pointer<char *>::value<<std::endl; // OK
std::cout<<"char ** : "<<std::is_pointer<char **>::value<<std::endl; // OK
std::cout<<"char *** : "<<std::is_pointer<char ***>::value<<std::endl; // OK
std::cout<<"std::nullptr_t : "<<std::is_pointer<std::nullptr_t>::value<<std::endl; // Not ok, Why false??
}

输出:[Wandbox Demo]

char : false
char * : true
char ** : true
char *** : true
std::nullptr_t : false

为什么是std::is_pointer<std::nullptr_t>::value等于 false

最佳答案

因为 std::nullptr_t 不是指针类型。并且 is_pointer 仅对指针类型计算为 true

nullptr_t 可转换为指针,但它不是指针。实际上,nullptr_t 不是类类型、整数、 float 、枚举数或除 is_null_pointer 类型之外的任何类型。它在类型的分类上有自己独特的分类。

关于c++ - 为什么 "std::is_pointer<std::nullptr_t>::value"等于 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47278515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com