Я хотел бы написать шаблон функции следующим образом:
template< typename L<T> > // does not work
void do_sth(L<T>& list){
T value = 0;
list.push_back(value);
}
Это означает, что в шаблоне я хотел бы работать с контейнерами, предлагающими «push_back», но также с типом, хранящимся внутриэтот контейнер.
Обходной путь будет
template< typename T >
void do_sth(typename std::list<T>& list){
T value = 0;
list.push_back(value);
}
// call
std::list<double> list;
do_sth<double>(list);
, что является избыточным, потому что a) я уже указал "double" при объявлении "list" и b) функция не будет работать с std:: vector, хотя реализация отлично подошла бы.
Кто-нибудь знает, как этого добиться?