そもそも
std::cout << "hoge" << std::endl;
の良かったところはグローバルな演算子オーバーロードで簡単に拡張が加えられるところだったと思うんだ。
std::ostream& operator<<(std::ostream& strm, const Hoge& fuga);
逆にいえばこれが使えなければ意味がないわけで…
Cout("hoge").newline;
とかは何を意図してこんなことをしようと思ったのか…

まぁ、可変個数引数だと問題はあるけど。
String s;
Cout(s.append("aa"), s.append("bb"), s.append("cc"))).newline;
これだと
aabbccとなるかccbbaaとなるかわからん。