2016-04-25 33 views
1

我有一個functor需要修改元組值。所以我通過一個const reference它。將元組的const引用傳遞給函子

這裏是我的代碼:

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 顯然我不是修改參考,我只修改由元組參考的價值。

+0

在C++中沒有「const引用」(引用永遠不可復位)。 'const'通常指的是綁定值。 –

+1

不知道推力圖書館,但在大多數圖書館,元組是不可改變的一個很好的理由。這個圖書館可能也是這種情況嗎? – UniversE

+0

當我沒有傳遞一個const引用時,我得到這個錯誤:類型爲「int&」(不是const限定的)的引用無法用類型爲「const thrust :: device_reference 」 – PRP

回答

1

..which needs to modify tuple values. So I am passing a const..

不要傳遞一個const,你會沒事的。

+0

當我沒有傳遞一個const&,我得到一個錯誤錯誤:類型爲「int&」(不是const限定的)的引用無法用類型爲「const thrust :: device_reference PRP

+0

的值初始化哦, t注意'推力',我不確定@PRP,從來沒有使用它*總是使用相關的標籤*! – gsamaras

+0

我認爲這個問題是獨立於使用的庫 – PRP