nullptr 的强类型?
我刚刚读了一篇关于 C++0x 标准的文章: http://www.softwarequalityconnection.com/2011/06/the-biggest-changes-in-c11-and-why-you-should-care/
它说 nullptr
是强类型的,这意味着它可以与整数 0 区分开来。
f(int);
f(char* p);
f(nullptr); // calls char* version
这很好,但我很想知道标准对带有两个指针函数的 nullptr
的规定
f(char* p);
f(int* p);
f(nullptr);
:我这里需要演员吗? nullptr
是模板化的吗?
f((int*)(nullptr);
f(static_cast<int*>(nullptr));
f(nullptr<int>); // I would prefer this
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我还没有读过这个的实际规范,但我很确定,如果没有强制转换,您指示的调用将是不明确的,因为空指针可以转换为任何类型的指针。所以演员阵容应该是必要的。
不幸的是,
nullptr
不是模板。不过,我真的很喜欢这个想法,所以你可以考虑编写一个像这样的函数:然后你可以写
I haven't read the actual spec on this one, but I'm pretty sure that the call you indicated would be ambiguous without a cast, since a null pointer can be converted to a pointer of any type. So the cast should be necessary.
And no, unfortunately,
nullptr
is not a template. I really like that idea, though, so you could consider writing a function like this one:And then you could write