【发布时间】:2019-09-10 11:11:01
【问题描述】:
我想把两个局部变量成对并返回,这是我的代码:
#include <utility>
class Foo {
};
class Bar {
};
std::pair<Foo, Bar> test() {
Foo foo;
Bar bar;
return std::make_pair<Foo, Bar>(foo, bar);
}
我得到了
main.cpp:92:10: error: no matching function for call to 'make_pair' /usr/bin/../lib/gcc/x86_64-linux-gnu/7.4.0/../../../../include/c++/7.4.0/bits/stl_pair.h:524:5: note: candidate function not viable: no known conversion from 'Foo' to 'Foo &&' for 1st argument make_pair(_T1&& __x, _T2&& __y)
如果我使用return std::make_pair<Foo, Bar>(std::move(foo), std::move(bar));,编译将成功。那我错过了什么?
【问题讨论】:
-
在询问涉及构建错误的问题时,请包含 full 和 complete 输出。可能有信息说明可能包含有关问题的提示。
标签: c++