c++ - 关于 Stroustrup C++ 书籍的 auto 和 {}-lists 问题
问题描述
以下内容出现在 Stroustrup C++ 第 4 版中。第 164 页。
T v3 = f();
T v3 {f()}; // works if and only if the type of f() can be implicitly converted to a T
auto v3 = f(); // v3 is of some appropriate type
有没有人举例说明T
这些示例可能是什么类型?
我对将函数分配给变量的理解如下:
void (*fptr)(void) = &f;
不幸的是,这不是 RHS 的形式f()
。因此,我对上述示例的用例感到有些困惑。
谢谢
解决方案
您没有在这里分配函数指针。 f()
表示调用()
任何f
是的运算符并返回结果。所以如果我们说f
是
int f() { return 42; }
那么对于
T v3 = f();
T
需要是可以从int
. 和
T v3 {f()};
T
必须是可以从 中创建的东西,int
也不能是缩小转换。和
auto v3 = f();
v3
将具有遵循模板参数推导规则的类型,因此int
在这种情况下。如果f
要返回 a int&
,它仍然是一个int
虽然,因为扣除规则不创建参考。
推荐阅读
- node.js - 使用 Jest 测试框架调用 fetch(url) 时如何根据 url 模拟变量响应?
- java - Transport.send 不适用于 javax.mail 库
- node.js - Cosmos DB 触发器绑定未注册?
- batch-file - 无法在批处理脚本中正确设置变量
- c++ - C++ 中的树实现:无法将节点转换为 int* 问问题
- java - 显示文本中最常用的词
- typescript - 如何在环回 4 中创建客户错误处理程序
- php - 如何在 PHP 中递归调用 __get()?
- amazon-web-services - 如何强制删除网络接口?AWS - 分离网络接口时出错
- r - R 将时间 (xx:xx:xx) 转换为最小值。as.POSIXct 返回错误“字符串不是标准的明确格式”