我想知道是否存在某种类型抹消机制来处理具有相同名称和参数但返回不同值的方法,就像下面的示例中的
我所知道的唯一类型抹消形式是拥有指向纯虚拟
begin
和end
。 我没有计划在任何地方实际使用它,我只是想知道是否可能,如果可能,如何完成。我所知道的唯一类型抹消形式是拥有指向纯虚拟
concept
类的指针,该指针指向转发调用到基础T
的model<T>
。 然而,这要求所有的T
都包含具有完全相同签名的方法,而在我的示例中,返回类型不同。 据我所知,需要类似于虚模板函数的东西来完成我所要求的操作,但我可能漏掉了什么。class Iterable
{
//how would this be defined?
}
int main(int argc, char *argv[])
{
vector<int> v = {1, 2, 3, 4, 5};
set<string> s = {"foo", "bar", "baz"};
Iterable iterable;
if(argc == 2) iterable = v;
else iterable = s;
for(auto val : it)
{
cout << val << ' ';
}
}