Jup*_*ter 12 c++ for-loop visual-c++ c++17 structured-bindings
我有以下代码:
#include "stdafx.h"
#include <unordered_map>
#include <cassert>
int main()
{
struct Foo { int a; };
std::unordered_map<int, Foo> foos{ { 0, { 3 } }, { 1, { 4 } } };
for (auto &[i, foo] : foos)
{
foo.a = 6; //doesn't change foos[i].a
assert(&foo.a == &foos[i].a); //does not pass
}
auto &[i, foo] = *foos.begin();
foo.a = 7; //changes foo[0].a
assert(&foo.a == &foos[0].a); //passes
}
Run Code Online (Sandbox Code Playgroud)
我的问题:
为什么第一个断言语句在第二个传递时没有通过?为什么我不能改变的价值foo在foos地图中基于范围循环?
编译: MSVS ++ 17 Visual studio 15.3.2
编辑:如果复制粘贴到Visual Studio项目中,代码现在编译.
| 归档时间: |
|
| 查看次数: |
3102 次 |
| 最近记录: |