c++ - 是否可以创建一个可以由给定常数初始化的 C++ 类?
问题描述
这里two_t
和three_t
是分别绑定到常量 2 和 3 的 2 个假设类。
int foo(two_t)
{
return 10;
}
int foo(three_t)
{
return 20;
}
int bar()
{
return foo(3); // 20 is returned
}
编辑:这个问题的动机:
我正在考虑这个问题,因为可以重载foo
接受 0 的函数。你可以通过使用 type 来做到这一点std::nullptr_t
。这就是为什么我想知道您是否也可以使用其他数字常量来做到这一点。
解决方案
你不能使用
return foo(3);
并期望3
转换为three_t
而不是two_t
仅基于参数的值。
参数不能唯一地转换为仅基于它的值的类型。
该标准明确为整数类型的常量表达式设置了例外,该表达式的计算结果为 0 和std::nullptr_t
. 那是对的。没有其他我能想到的例外。
推荐阅读
- oracle - 客户搜索中的 Netsuite CASE 返回多行
- excel - 如果在列中找到值,则将其复制到行中的某些元素
- .net - Parallel.ForEach 添加和读取ConcurrentBag,安全吗?
- javascript - 编写脚本来更新重复任务
- azure - 如何使用 Azure Logic App 将数据库结果/记录存储到内存缓存中
- php - 此路由不支持 GET 方法。支持的方法:POST。在 Laravel 7.24.0
- reactjs - 如何访问 useEffect 中的 URL 参数?
- clickhouse - 如何在 Clickhouse 中将列从一个表添加到另一个表?
- xamarin.forms - Xamarin 表单:XamForms.Controls.Calendar 中的特殊日期选择问题
- python - 编码中0和-0的区别