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' の呼び出しに一致する関数がありません」、「実行可能な候補関数がありません: 第 1 引数の `'std::list<int>' から 'std::list<int>&' への既知の変換がありません」
何故ですか?関数の結果が目に見えないからconst
ですか?