我猜这是一个简单的问题。
向量和列表都具有推送和弹出功能,而且——更重要的是——可以迭代:
for ( auto value : items )
...
但是,std::vector 和 std::list 似乎并不共享一个基类。因此,问题是:我如何编写一个函数来接受其中一个(或者,实际上,任何其他适合实现的)?
std::list<int> a;
std::vector<int> b;
DoSomething(a);
DoSomething(b);
我想在不超载的情况下做到这一点。如果使用模板,它们不应该导致疯狂的错误消息。例如下面的代码——
int a;
DoSomething(a);
-- 应该会导致调用站点出现编译错误,而不是模板内部的某个地方!
有人有想法么?