Я думаю, что код, который вы показали, был неработоспособен: здесь исправление и способ сборки, и это работает на g ++ 4.4.5, поэтому дважды проверьте w / вашу версию:
#include<vector>
template <class Key, class CollT = std::vector<Key> >
CollT* delete_(Key kValue)
{
return new CollT;
}
int main()
{
return 0;
}
для сборки:
g ++ templdef.cpp -std = c ++ 0x
РЕДАКТИРОВАТЬ на основе комментариев:
1) replace typename with class within template definition (both class CollT and typename CollT seems fine)
2) replaced `vector<int>` with `vector<Key>`
3) compiling without flag, will give you the following error: default template arguments may not be used in function templates without -std=c++0x or -std=gnu++0x