如何在调用带有左值引用形参的函数时声明左值?

  • 本文关键字:函数 声明 形参 引用 调用 c++
  • 更新时间 :
  • 英文 :


如果我有这样一个函数:

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左值引用?

最新更新