相关疑难解决方法(0)

保证副本省略如何运作?

在2016年奥卢ISO C++标准会议上,标准委员会将一项名为" 保证副本省略"的提案通过简化的价值类别投票进入C++ 17.

保证副本省略如何运作?是否涵盖了某些已经允许复制省略的情况,或者是否需要更改代码来保证复制省略?

c++ copy-elision c++17

75
推荐指数
1
解决办法
7883
查看次数

如何在 QJsonArray 中使用基于 C++11 的范围

使用旧式循环,我可以深入研究 aQJsonArray并在下面的示例中为每个数组项添加元素“foo”和现有元素“bar”的内容。我如何使用基于 C++11 的范围来做到这一点?

// QJsonArray oldArray contains an array of which one element is "bar"
QJsonArray newArray;
int i, b = oldArray.count();
for (i=0; i<n; ++i) {
    QJsonObject element = oldArray.at(i).toObject();
    element["foo"] = element["bar"];
    newArray.append(element);
}
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法(无可否认是反复试验):

汽车&

for (auto& element : oldArray) {
    element["foo"] = element["bar];
    newArray.append(element);
}
Run Code Online (Sandbox Code Playgroud)

我收到错误

对类型“QJsonValueRef”的非常量左值引用无法绑定到“QJsonValueRef”类型的临时变量

常量自动&

for (const auto& element : oldArray) {
...
Run Code Online (Sandbox Code Playgroud)

我收到警告

循环变量“元素”始终是副本,因为“QJsonArray”类型的范围不返回引用

常量自动

for (const auto element : oldArray) {
    element["foo"] = element["bar];
    ...
Run Code Online (Sandbox Code Playgroud)

我收到错误

'const QJsonValueRef' …

qt for-loop c++11

9
推荐指数
1
解决办法
3003
查看次数

标签 统计

c++ ×1

c++11 ×1

c++17 ×1

copy-elision ×1

for-loop ×1

qt ×1