首页 > 解决方案 > 关于 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()。因此,我对上述示例的用例感到有些困惑。

谢谢

标签: c++c++11

解决方案


您没有在这里分配函数指针。 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虽然,因为扣除规则不创建参考。


推荐阅读