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