Variadic template template parameters に関して,ちょっとした疑問

次のコードは gcc 4.6.0 と clang 2.9 でコンパイルの通るものです.

template <class T = void>
struct A {};

template <template <class ...> class U>
struct B
{
    U<> a;
};

B<A> b;

B<A> のインスタンス化中は U = A となっているわけですが,U<> が通るということは,U には A のデフォルト引数が使えるということです.この挙動があまり自然には思えません.FDIS からはこれを明示的に認める記述を見つけられなかったのですが,使ってよいものでしょうか.
気にしすぎかもしれませんが.