C++0x Variadic Template Template Parameters

現在の 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)

Variadic Templates

Template Template Parameters

C++0x言語拡張まとめ