【发布时间】: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<1> (tup)不是一个“可修改的左值”,因为你写了const(其他部分也是如此)。由于thrust::device_reference已经“充当”引用,因此您应该能够通过值传递它们并使用它们。
标签: c++ constants pass-by-reference thrust