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 からはこれを明示的に認める記述を見つけられなかったのですが,使ってよいものでしょうか.
気にしすぎかもしれませんが.