好的,我有以下事件序列:
- 我构造了一个右值对象
- 我将一个迭代器传递给那个右值对象到一个函数中作为参数
- 该函数在此迭代器上运行
- 该函数按值返回此迭代器
- 我取消引用迭代器
我不知道是什么原因导致清理 r 值对象,是该行的终止吗?
好的,现在具体来说,我试图为这个问题想出一个更好的答案:C++ 中的字符串乘法我有代码:
const auto bar = 13U;
const char multiplicand[] = "0, ";
const auto length = strlen(multiplicand);
const string foo(&*generate_n(string(bar * length, '\0').begin(), bar * length, [&]() {
static auto i = 0U;
return multiplicand[i++ % length];
}) - bar * length);
所以我想知道什么时候应该销毁string
内部构造的。generate_n
顺便说一句,这似乎在 gcc 5.1 上运行良好:http: //ideone.com/Y8rDs5但我可能只是得到未定义的行为。Visual Studio 2015 上的代码段错误这一事实暗示了这一点。