打破我有一吨的功能被定义为这样的:模板功能与新的分配器
template<typename T>
void myFunction1(vector<T>& vin);
问题的关键是,我输入一个STL向量和做一些工作。
我最近需要将默认分配器更改为客户分配器。这似乎除非我改变定义,以打破各功能:
template<typename T, typename Alloc>
void myFunction1(vector<T,Alloc>& vin);
为了使问题更加复杂,我不会使用重载分配器在所有情况下..
这是否意味着我不得不重写每个函数有两个定义,一个是分配器的模板,另一个是没有分配器的定义?我真的希望这不是答案...
你不应该去variadics。图书馆要求说有一个名为'vector'的模板需要两个类型参数;虽然允许实现添加额外的参数,但不允许它们使'vector不起作用。如果您尝试编写自己的标准库类型声明,那么您可能会遇到麻烦的地方。使用标准库类型只需要按照文档进行工作。 –
@PeteBecker:你说得对。我在考虑一个不同的情况(专业化),在那里“允许的额外论据”来咬你。不过,让我从这篇文章中删除它吧! –
关于专业化的好处。我没有想到这一点。 –