如果我有这样一个函数:
int calc(const DataVec& data_vec, int& sub_sum);
如果没有int类型的显式左值定义,如何调用?
auto calc_result = calc(data_vec, int()); // error, int() is not a lvalue
下面是一个有效的形式:
int _; // not interested
auto calc_result = calc(data_vec, _);
这可以通过函数重载来解决。像
int calc(const DataVec& data_vec);
您的重载函数可以是您的伪int变量解决方案的简单包装:
int calc(const DataVec& data_vec)
{
int dummy = 0;
return calc(data_vec, dummy);
}
请注意,这可能是解决问题的合适方法。但它也可能是一个解决不存在的问题的方法,而且实际上不应该有任何解决方法。也许有一个很好的理由,原来的calc
函数的第二个参数是非const左值引用?