template<???>
struct Container{
T t;
M<T> v;
}
Container<vector<int>>
应该生成
struct Container{
int t;
vector<int> v;
}
我可以用模板表达吗?
答案 0 :(得分:6)
是:
template<typename T, template <typename, typename> class M>
struct Container {
T t;
M<T,std::allocator<T>> v;
};
使用:
Container<int,std::vector>
可替换地:
template <typename C>
struct Container {
typename C::value_type t;
C v;
};
并使用:
Container<std::vector<int>>
答案 1 :(得分:2)
保持模板简单,否则你会头疼。
template<class CONTAINER>
struct Container
{
typedef CONTAINER container_type;
typedef typename container_type::value_type value_type;
value_type t;
container_type v;
};
答案 2 :(得分:0)
是的,有两种方法。您可以要求您的type参数为定义了value_type
的容器:
template <typename T>
struct Container {
typename T::value_type t;
T v;
};
(如果T
不是某个具有value_type
typedef的类,则无法编译,或者您可以做更精细的事情。如果可能的话,我需要定义value_type
。