0

今日、参照が再装着可能ではないことを知り ました。コードを検討してください。

map<int,int> z;
z.insert(make_pair(1,2));
z.insert(make_pair(3,5));
z.insert(make_pair(4,6));
auto ref = z.at(1);
ref = z.at(3);

std::map::at要求された要素のマップされた値への参照を返します。ref が参照であることを意味します。再割り当てが許可されているのはなぜですか (参照を再バインドできないため)。ここで何が起きてるの。

4

1 に答える 1

2

auto参照型を作成しません。式z.at(1)は type の左辺値であるintためref、int でもあります。

(参照が必要な場合は、auto &またはauto &&(または C++14 で) と言う必要がありますdecltype(auto))。

于 2013-07-16T23:30:05.693 に答える