Variadic Template Template Parameters使ってみた

#include <vector>
#include <list>
#include <deque>

template <template <class... Args> class Container>
class X {
    Container<int> cont_;
};

int main()
{
    X<std::vector> v;  // OK
    X<std::list>   ls; // OK
    X<std::deque>  d;  // OK
}

Xのテンプレートパラメータを増やしてコンテナのパラメータを受け取るようにすればmapとかでもいけますね。

#include <vector>
#include <list>
#include <deque>
#include <map>

template <template <class...> class Container, class... Args>
class X {
    Container<Args...> cont_;
};

int main()
{
    X<std::vector, int>         v;
    X<std::list,   int>         ls;
    X<std::deque,  int>         d;
    X<std::map,    int, double> m;
}

Template Template Prametersがかなり使いやすくなる気がする



C++0x Variadic Template Template Parameters