【发布时间】:2019-09-09 19:22:41
【问题描述】:
给定一个像这样的对象:
struct Foo {
string _mem;
pair<bool, const string&> Func() { return make_pair(true, _mem); }
};
我是否真的返回了对_mem 的引用?我的理解是 c++14 make_pair 会转发我的类型,允许我使用返回来捕获它作为对对象 _mem 的引用。
这种行为似乎与我在 gcc 8 中看到的一致:http://ideone.com/adz17e 但是当我尝试在visual-studio-2017 上运行它时,它会出现段错误。如果我更改为返回 make_pair(true, ref(_mem)) 它可以工作,但我认为我不需要这样做。这些行为哪一种是正确的?
【问题讨论】:
标签: c++14 visual-studio-2017 c++ reference visual-studio-2017 c++14 std-pair