Немного простой вопрос этот, я думаю.
И векторы, и списки имеют функции push и pop, и, что более важно, их можно повторять:
for ( auto value : items )
...
Однако std::vector и std::list, похоже, не имеют общего базового класса. Следовательно, возникает вопрос: как мне написать функцию, которая будет принимать одно из них (или вообще любое другое, подходящее для реализации)?
std::list<int> a;
std::vector<int> b;
DoSomething(a);
DoSomething(b);
Я хотел бы сделать это без перегрузки. Если используются шаблоны, они не должны вызывать безумных сообщений об ошибках. Например, следующий код --
int a;
DoSomething(a);
-- должно привести к ошибке компиляции на месте вызова, не где-то внутри шаблона!
У кого-нибудь есть идеи?