经过多年的 AS3,我正在尝试重新学习 C++。参考文献仍然让我很适合。
考虑以下函数:
#include <cstdio>
#include <list>
void f(std::list<int>& v) {
for (std::list<int>::iterator i = v.begin(); i != v.end(); ++i)
printf("Hello %d\n", *i);
}
std::list<int> get(void) {
std::list<int> list;
list.push_back(0);
return list;
}
现在,执行以下操作:
std::list<int> l = get();
f(l);
很好,但f(get())
会产生以下错误:
“没有调用 'f' 的匹配函数”,“候选函数不可行:第一个参数没有从 `'std::list<int>' 到 'std::list<int>&' 的已知转换”
这是为什么?是因为函数的结果是不可见的const
吗?