【发布时间】:2017-11-25 09:24:32
【问题描述】:
Foo x(Bar());
我可以在另一个函数中写入并编译。为什么? 还有一个函数声明如何在它的签名中获得一个临时对象?
【问题讨论】:
-
不是临时的。目的。它是什么都没有得到并返回 Bar 的函数
-
@Peter 你确定吗? ideone.com/Vgg6Ia
-
@Peter 你错了。
-
@Peter,不在这种情况下
-
一个典型的解决方法是使用统一初始化:
Foo x{Bar{}};。有些人不喜欢它,因为他们更喜欢内容为{2}的vector<int> v(1, 2);,而不是内容为{1, 2}的vector<int> v{1, 2};。