我尝试让一个部分专门化的模板类继承自另一个模板类。我不知道该怎么做。下面是我的代码:
template < typename T>
struct SmallContainer
{
typedef vector<T> type;
};
template<typename CONTAINER, typename T>
class AnotherClass : public CONTAINER<SmallContainer<T>::type>
{ // ..... };而gcc一直在说期望的模板名称在‘<’令牌之前期望‘{’在‘<’令牌之前期望未限定的id在‘<’令牌之前期望的
我的对象的想法是让AnotherClass成为我想要的任何其他类型的向量的通用容器。
我试着做template<模板容器,类型名称T>等...百无所成。有什么想法吗?谢谢..。
发布于 2012-05-19 02:31:53
这是不可能做到的,至少用STL容器是不行的。您可以为每个容器创建一个类似SmallContainer的包装器,这样您就可以提供默认参数,但是STL容器在大多数情况下并不共享公共参数。此外,没有办法匹配任意类型的第三方模板。但是,在给定包装器或C++11别名的情况下,您可以将容器转换为模板模板参数。
请注意,没有一个标准库容器模板采用单个模板参数,它们具有您通常不使用的默认值,因此您通常只提供一个,但到目前为止,建议的答案都不适用于标准库模板。
https://stackoverflow.com/questions/10657900
复制相似问题