如果我有这样一个函数:
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, _);
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 函数 的 第 二 个 参数 是 一 个 非常 常量 的 左 值 引用 ?
calc
1条答案
按热度按时间ocebsuys1#
这 可以 通过 函数 重载 来 解决 。
中 的 每 一 个
重载 的 函数 可以 是 一 个 简单 的 Package 器 , 用于 封装 dummy-int 变量 :
格式
请 注意 , 这 可能 是 一 个 合适 的 解决 方法 。 但 它 也 可能 是 一 个 实际 上 并 不 存在 的 问题 的 解决 方法 , 而且 也 不 应该 有 任何 解决 方法 。 也许 有 一 个 很 好 的 理由 让 原来 的
calc
函数 的 第 二 个 参数 是 一 个 非常 常量 的 左 值 引用 ?