e4836.cpp

ローカル変数の参照を返してもゴミが返るだけ

/* A:e4836: ローカル変数の参照を返しています */

修正前 const std::string& quoteString(const std::string& str) { std::string str = '"' + str + '"'; return str; }
修正後 std::string quoteString(const std::string& str) { std::string str = '"' + str + '"'; return str; }

解説 一時オブジェクトコピーのオーバーヘッドを減らそうとして ローカル変数を参照で返しては駄目。 ローカル変数のスコープから抜けるのでゴミを返す事になります。