首页 文章

从nullptr_t转换为bool:有效与否?

提问于
浏览
8

我用3个编译器测试了以下代码,得到了3个不同的结果:错误,警告和确定 .

  • GCC(5.3):错误:从'std :: nullptr_t'到'const Thing&'的用户定义转换无效

  • Clang(3.8):警告:将nullptr常量隐式转换为'bool'

  • MSVC(14.1):没有错误,没有警告

哪个编译器正确?我知道这是指针类型和 bool 之间的微不足道的转换 . 但是 std::nullptr_tbool 是什么?

(最后,Clang和MSVC对代码都很好.Clang以积极的方式更加冗长 . )

struct Thing
{
    Thing(bool) {}
};

void addThing(const Thing&){}

int main()
{
    addThing(nullptr); // warning or error on this line
}

1 回答

相关问题