gpt4 book ai didi

c++ - 特定于 NULL 的参数解析

转载 作者:行者123 更新时间:2023-11-28 04:30:33 24 4
gpt4 key购买 nike

C++11 引入了 std::nullptr_t 以允许在传递 nullptr 常量的地方显式重载方法。我想要的是同样的东西,但使用旧的 NULL(又名 0)。我觉得应该有一个解决方案,也许可以利用 SFINAE,但就我的生活而言,我想不出一个。

更清楚地说,我想要 3 种方法:

Foo(int*); //binds to an int pointer
Foo(std::nullptr_t); //binds to a nullptr constant
Foo(something); //should bind to NULL

something 应该是什么,这样对 Foo(NULL) 的调用才不会产生歧义?

我不希望 NULL 的方法重载绑定(bind)到任意整数

提前致谢

最佳答案

相同的 Foo(std::nullptr_t) 重载也适用于 NULL。存在从任何 空指针常量到std::nullptr_t 的隐式转换。这包括 00UL,无论 NULL 被定义为什么,当然还有 nullptr 本身。

如果您只想消除 int*nullptr_t 的歧义,那么我们可以修改重载解析规则。例如,使 Foo(int*) 成为模板:

template<int = 0>
void Foo(int*);
void Foo(std::nullptr_t);

重载时,非模板总是更适合模板。

关于c++ - 特定于 NULL 的参数解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53086772/

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