首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尽管‘`nullptr`’具有来自`cout<<nullptr`的`nullptr_t`类型,但给出了错误

尽管‘`nullptr`’具有来自`cout<<nullptr`的`nullptr_t`类型,但给出了错误
EN

Stack Overflow用户
提问于 2021-08-27 11:05:24
回答 1查看 215关注 0票数 0

代码-1

代码语言:javascript
复制
#include <iostream>

int main()
{
    std::cout << nullptr;
    return 0;
}

输出

代码语言:javascript
复制
Error: Use of overloaded operator '<<' is ambiguous (with operand types 'std::ostream' (aka 'basic_ostream<char>') and 'nullptr_t')

即使是nullptr也有特定的类型,为什么会显示错误。但

码-2

代码语言:javascript
复制
#include <iostream>

int main()
{
    std::cout << (void*)nullptr;
    return 0;
}

输出

代码语言:javascript
复制
0

效果很好。为什么它与void*一起工作,即使它不是一种类型?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-27 11:29:30

std::cout << nullptr;适用于C++17,如果它不适用于您,那么要么您没有使用C++17,要么您的语言实现对C++17的支持是不完整的。

在C++17之前,std::cout << nullptr;没有工作,因为重载std::ostream::operator<<(std::nullptr_t)不存在,并且没有明确的最佳重载可以隐式转换为nullptr

为什么它与void一起工作*即使它不是一种类型?

void*是一种类型,它的工作是因为重载std::ostream::operator<<(const void*);的存在。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68952355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档