8得票2回答
vector<T>::swap and temporary object

以下是代码: #include &lt;vector&gt; int main() { vector&lt;int&gt; v1(5,1); v1.swap(vector&lt;int&gt; ()); //try to swap v1 with a temporary ...

50得票4回答
为什么通过函数传递的临时对象,即使使用const引用也不能延长其生命周期?

在下面的简单示例中,为什么不能将 ref2 绑定到 min(x,y+1) 的结果? #include &lt;cstdio&gt; template&lt; typename T &gt; const T&amp; min(const T&amp; a, const T&amp; b){ r...

14得票2回答
未定义行为和临时变量

1) 返回对临时对象的引用是否属于未定义的行为,即使该引用未被使用?例如,这个程序是否保证输出“good”:int&amp; func() { int i = 5; return i; } int main() { func(); cout &lt;&lt;...

15得票1回答
通过获取子对象的引用来延长临时对象的生命周期

在cppreference.com和C++11标准中,关于临时对象何时生命期延长有微妙的差异(重点是我的)。 来自cppreference.com: 当引用绑定到临时对象或临时对象的基类子对象时,临时对象的生命期将延长以与引用的生命期相匹配, 来自C++11标准: 第二种...

36得票1回答
C++中括号的类型如何影响对象的生命周期?

我的一个朋友向我展示了一款使用C++20编写的程序: #include &lt;iostream&gt; struct A { A() {std::cout &lt;&lt; "A()\n";} ~A() {std::cout &lt;&lt; "~A()\n";} }; ...

19得票2回答
我说将const_cast用于修改绑定到临时对象的常量引用是正确的,这样说对吗?

我希望确认自己对这个问题的理解和结论是否正确。 在IRC上,有人问: 将绑定到临时对象的const引用进行const_cast是否可接受? 翻译:他有一个绑定到临时对象的const引用,并想要去除其const属性以进行修改。 我的回答是,我之前曾问过类似的问题,共识似乎是临时对...

68得票4回答
为什么不能将临时对象绑定到非const引用?

C++允许将临时对象赋值给const引用,但不允许将临时对象赋值给引用。 例如: String&amp; a = String("test"); // Error const String&amp; a = String("test"); // Ok 无论我在哪里搜...

42得票4回答
临时对象 - 何时创建,如何在代码中识别?

在Eckel的第一卷,第367页//: C08:ConstReturnValues.cpp // Constant return by value // Result cannot be used as an lvalue class X { int i; public: X(in...

7得票3回答
在成员函数内部检测对象是否为临时对象,这种情况是否可能?

我正在使用指向实现的惯用法在不可变对象上实现装饰器模式。基本上,我的设置看起来像这样: struct Object : ObjectBase { void doSmth() override { impl-&gt;doSmth(); } // ...

16得票2回答
在临时范围上使用基于范围的for循环

由于valgrind中出现了一些分段错误和警告信息,我发现这段代码是不正确的,并且在for-range循环中存在某种悬空引用。#include&lt;numeric&gt; #include&lt;vector&gt; auto f(){ std::vector&lt;std::ve...