現在の Variadic Templates だと Template Template Parameters のマッチングがきびしすぎるので
こういうクラスがあった場合
template<template<typename...> class T, typename... U> struct eval<T<U...> > { /*...*/ };
以下の全てがマッチングできるように制限をゆるめるそうです
template<typename...> class A; template<typename T> class B; template<typename T1, typename T2> class C; template<typename T1, typename T2, typename...> class D;
これで、Boost.MPL と Boost.Proto がコードの繰り返しなしで書けるようになるんだとか
N2555 Extending Variadic Template Template Parameters (Revision 1)