【问题标题】:passing a const reference of a tuple to a functor将元组的 const 引用传递给函子
【发布时间】:2016-08-19 00:19:17
【问题描述】:

我有一个需要修改元组值的functor。所以我将const reference 传递给它。

这是我的代码:

void operator() (thrust::tuple<const int&,const float&> tup)
{
    thrust::get<1> (tup) += 10;
    thrust::get<0> (tup) += 10;

}

但我收到一个错误: error: expression must be a modifiable lvalue 显然我不是在修改引用,我只是在修改元组引用的值。

【问题讨论】:

  • C++ 中没有“const 引用”(引用永远不可重新安装)。 const 总是指绑定值。
  • 不知道推力库,但在大多数库中,元组是不可变的,这是有充分理由的。这个库可能也是这样吗?
  • 当我没有传递 const 引用时,我收到此错误:“int &”类型的引用(非 const 限定)不能用“const 推力::device_reference”类型的值初始化"
  • thrust::get&lt;1&gt; (tup) 不是一个“可修改的左值”,因为你写了const(其他部分也是如此)。由于thrust::device_reference 已经“充当”引用,因此您应该能够通过值传递它们并使用它们。

标签: c++ constants pass-by-reference thrust


【解决方案1】:

..需要修改元组值。所以我传递了一个常量..

不要传递一个常量,你会没事的。

【讨论】:

  • 当我没有传递一个 const& 时,我得到一个错误错误:“int &”类型的引用(非 const 限定)不能用“const 推力::device_reference”类型的值初始化
  • 哦,我没注意到thrust,我不确定@PRP,没用过。 始终使用相关标签
  • 我认为这个问题与使用的库无关
  • 嗯,你为什么这么说@PRP?这有帮助吗? stackoverflow.com/questions/33892801/… // 我将我的答案留给下一个人知道。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-11
  • 2012-02-25
  • 1970-01-01
  • 2016-04-15
  • 2023-03-14
相关资源
最近更新 更多