C++ 将元组的常量引用传递给函子

C++ 将元组的常量引用传递给函子,c++,constants,pass-by-reference,thrust,C++,Constants,Pass By Reference,Thrust,我有一个函子,它需要修改元组值。因此,我将一个常量引用传递给它 这是我的密码: void operator() (thrust::tuple<const int&,const float&> tup) { thrust::get<1> (tup) += 10; thrust::get<0> (tup) += 10; } void操作符()(推力::元组tup) { 推力:get(tup)+=10; 推力:get(tup)+=

我有一个
函子
,它需要修改元组值。因此,我将一个
常量引用传递给它

这是我的密码:

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

}
void操作符()(推力::元组tup)
{
推力:get(tup)+=10;
推力:get(tup)+=10;
}
但我得到了一个错误:
错误:表达式必须是可修改的左值
显然,我没有修改引用,我只是修改元组引用的值

…需要修改元组值。所以我通过了一个常数


不要传递一个常数,你就可以了。

C++中没有“const引用”(引用永远不可重新存储)。
const
总是指绑定值。我们不知道推力库,但在大多数库中,元组是不可变的,这是有充分理由的。在这个库中可能也是这种情况吗?当我不传递常量引用时,我会得到以下错误:类型为“int&”(非const-qualified)的引用不能用类型为“const-struch::device_-reference”的值初始化。
struch::get(tup)
不是“可修改的左值”,正是因为您编写了
const
(对于它的另一部分也是如此)。由于
推力::设备_reference
已经“像”了一个引用,您应该能够通过值传递它们并使用它们。当我没有传递常量时,我得到一个错误:类型为“int&”(非const-qualified)的引用不能用类型为的值初始化“const-thrust::device\u referenceOh,我没有注意到
thrust
,我不确定@PRP,从来没有使用过它。始终使用相关的标记!我认为这个问题与使用的库无关。您为什么说@PRP?这有帮助吗?//我将我的答案留给下一个人知道。