最後ね。もしくは別スレに移動してくれ。
return (*this); しないと

TreeObj<std::string> x, y;
x = y = "foo";

の2行目がコンパイルできないだろう?