>>32
まちがってる

foo(const foo& f) : _id(f._id) { }
foo& operator=(const foo& f) { _id = f._id; return *this;}

コピーコンストラクタや代入演算子はconstの参照だ
一時オブジェクトは非const参照できない