#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