打破我有一噸的功能被定義爲這樣的:模板功能與新的分配器
template<typename T>
void myFunction1(vector<T>& vin);
問題的關鍵是,我輸入一個STL向量和做一些工作。
我最近需要將默認分配器更改爲客戶分配器。這似乎除非我改變定義,以打破各功能:
template<typename T, typename Alloc>
void myFunction1(vector<T,Alloc>& vin);
爲了使問題更加複雜,我不會使用重載分配器在所有情況下..
這是否意味着我不得不重寫每個函數有兩個定義,一個是分配器的模板,另一個是沒有分配器的定義?我真的希望這不是答案...
你不應該去variadics。圖書館要求說有一個名爲'vector'的模板需要兩個類型參數;雖然允許實現添加額外的參數,但不允許它們使'vector不起作用。如果您嘗試編寫自己的標準庫類型聲明,那麼您可能會遇到麻煩的地方。使用標準庫類型只需要按照文檔進行工作。 –
@PeteBecker:你說得對。我在考慮一個不同的情況(專業化),在那裏「允許的額外論據」來咬你。不過,讓我從這篇文章中刪除它吧! –
關於專業化的好處。我沒有想到這一點。 –