1
我试图定义一个模板函数,它需要一个容器,它也是一个模板类型。我需要知道容器的模板类型是什么(E
)(所以我可以在代码中引用它,例如E element = *iterator;
)。这里是我的尝试:试图定义一个采用模板参数的模板函数
template <template <typename E> T>
void sort(T& container){ ... }
我认为这意味着“sort
是一个模板函数,它接受一个模板参数T
T
是一个模板类型,需要一个模板参数E
。”
但是我得到的错误:
expected 'class' before T.
当我把 '阶级' 在那里,它说:
variable or field 'sort' declared void
我在做什么错误的语法?
只需一个简单的类型参数'T',然后使用'typename T :: value_type'。你在做什么不能用标准容器 - 它们有多个模板参数。 – 2014-10-12 14:10:54
'T'不是一种类型。你不能参考某种不属于某种类型的东西。顺便说一句,叮当[处理这两个错误很好](http://coliru.stacked-crooked.com/a/8dfca2ea54604829)。 – chris 2014-10-12 14:11:27
正如克鲁斯所说的,你也必须给模板“T”适当的参数。实际上,你对模板不感兴趣,而是对特定的模板实例化(一个类)感兴趣。 – Deduplicator 2014-10-12 14:14:39