http://developer-resource.blogspot.com.au/2009/01/pros-and-cons-of-returing-references.htmlで見つけたブログは次のように書いています。
このコードベースでしばらく作業した後、参照を返すことは悪であり、ポインタを返すのと同じように扱う必要があると思います。これは避けてください。
たとえば、デバッグに1週間かかった問題は、次のとおりです。
class Foo {
std::vector< Bar > m_vec;
public:
void insert(Bar& b) { m_vec.push_back(b); }
Bar const& getById(int id) { return m_vec[id]; }
}
この例の問題は、クライアントがベクターに格納されている参照を呼び出して取得していることです。クライアントが新しい要素をたくさん挿入した後はどうなりますか?ベクターは内部でサイズを変更し、それらすべての参照に何が起こるかを推測する必要がありますか?そうです、無効です。これにより、&を削除するだけで修正されたバグを見つけるのが非常に困難になりました。
コードに問題はありません。参照およびSTLコンテナによる返品を誤解していますか、それとも投稿が正しくありませんか?