C++の

vector<int> u;
u = vector<int>(3);

というようなコードで、uvector<int>(3)を代入するのはどういう文法構造になっているのでしょうか。
vector<int>の後の(3)がvectorクラス初期化時の要素の数を表しているのは理解していますが、vector<int>(3)が何者なのかが分かりません。vector<int>(3)と書くと右辺値のオブジェクトを返してくれるという決まりがあるのでしょうか?その決まりはどのドキュメントに書かれていますか?
また、

u = *(new vector<int>(3));

とはどういう違いがあるのでしょうか?