c++ 当我们调用一个带有左值引用参数的函数时,我们如何在适当的位置声明左值?

lf5gs5x2  于 2022-11-19  发布在  其他
关注(0)|答案(1)|浏览(107)

如果我有这样一个函数:

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, _);
ocebsuys

ocebsuys1#

这 可以 通过 函数 重载 来 解决 。

int calc(const DataVec& data_vec);

中 的 每 一 个
重载 的 函数 可以 是 一 个 简单 的 Package 器 , 用于 封装 dummy-int 变量 :

int calc(const DataVec& data_vec)
{
    int dummy = 0;
    return calc(data_vec, dummy);
}

格式
请 注意 , 这 可能 是 一 个 合适 的 解决 方法 。 但 它 也 可能 是 一 个 实际 上 并 不 存在 的 问题 的 解决 方法 , 而且 也 不 应该 有 任何 解决 方法 。 也许 有 一 个 很 好 的 理由 让 原来 的 calc 函数 的 第 二 个 参数 是 一 个 非常 常量 的 左 值 引用 ?

相关问题