20得票4回答
临时对象存储在哪里?

暂时对象是否存储在动态(堆)内存中?(参考链接)

29得票3回答
在同一表达式中,两个临时变量的地址是否保证不同?

考虑下面的程序:#include <iostream> int const * f(int const &i) { return &i; } int main() { std::cout << f(42); // #1 std:...

7得票2回答
你能解引用一个临时数组吗?

考虑以下代码: void foo() { int arr[1]; *arr; // OK using T = int[1]; *T{}; // OK for Clang and MSVC // GCC error: taking addr...

9得票2回答
使用函数返回值初始化对象时未调用拷贝构造函数

Consider the following code: #include <iostream> using namespace std; class A { public: int a; A(): a(5) { ...

7得票3回答
绑定到引用的临时对象生命周期扩展的例外原理是什么?

在C++11标准的12.2节中: 引用所绑定的临时对象或是引用所绑定子对象的完整对象,除非: 1. 在构造函数的ctor-initializer(12.6.2)中绑定到引用成员的临时对象一直持续到构造函数退出。 2. 在函数调用(5.2.2)中绑定到引用参数的临时对象一直持续到包含该调用的...

18得票4回答
延长临时物品的使用寿命

允许这个的设计理念是什么? const Foo& a = function_returning_Foo_by_value(); 但不是这个 Foo& a = function_returning_Foo_by_value(); ? 第二行可能会出什么问题(第一行已...

71得票1回答
返回临时对象并绑定到常量引用

我的编译器对将临时变量赋值给常量引用没有任何抱怨: string foo() { return string("123"); }; int main() { const string& val = foo(); printf("%s\n", val.c_str()); ...

16得票1回答
C++使用不同括号实现寿命扩展

我正在试图理解C++中的生命周期延长保证。有人能否解释一下为什么在以下不同类型的括号使用下,临时对象析构函数被调用的时间会产生不同的结果? #include <iostream> struct X { X() { std::cout << ...

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

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

7得票5回答
如何使用自然的语法实现线程安全容器?

前言 如果按原样使用以下代码,将会导致未定义的行为: vector<int> vi; ... vi.push_back(1); // thread-1 ... vi.pop(); // thread-2 传统的做法是使用std::mutex来解决这个问题: std::l...