const参照は一時変数にバインドできる

const参照の関数パラメータに対してデフォルト引数を付けようとして、これってできるんだっけ? と引っかかりました。
例:

void func(const std::vector<int>& param = std::vector<int>());


デフォルト引数となっているstd::vector()はrvalueに評価されるはずなので、そいつへの参照って取れないのでは? という疑問。
しかし、このコードは警告出ずにビルドが通り、期待通りに動作もします。


文法リファレンス本をよく読んでみると、次の記述が見つかりました。

const参照は、一時オブジェクトを参照できるように初期化できる。
(「C++ランゲージクイックリファレンス」 p.43)


というわけで、このコードは大丈夫なようです。
しかしやや気持ち悪い。やっぱりデフォルト引数は使わずに済ませた方が良いかな。