2016-04-25 17 views
1

Ich habe eine functor, die Tupelwerte ändern muss. Also gebe ich eine const reference dazu.Übergabe einer Konst-Referenz eines Tupels an einen Funktor

Hier ist mein Code:

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

} 

Aber ich erhalte eine Fehlermeldung: error: expression must be a modifiable lvalue Klar ich nicht die Referenz zu modifizieren bin, ich nur den Wert durch das Tupel referenziert zu modifizieren.

+0

In C++ gibt es keine "const references" (Referenzen sind nie umsetzbar). Der Begriff "const" bezieht sich immer auf den gebundenen Wert. –

+1

Ich weiß nicht, Schub-Bibliothek, aber in den meisten Bibliotheken sind Tupel aus einem guten Grund unveränderlich. Könnte das auch in dieser Bibliothek der Fall sein? – UniversE

+0

Wenn ich keine const-Referenz übergebe, bekomme ich diesen Fehler: Eine Referenz vom Typ "int &" (nicht const-qualifiziert) kann nicht mit einem Wert vom Typ "const thrust :: device_reference " – PRP

Antwort

1

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

Übergeben Sie keine Const und Sie werden in Ordnung sein.

+0

Wenn ich ein const & nicht übergebe, erhalte ich einen Fehler Fehler: eine Referenz vom Typ "int &" (nicht const-qualifiziert) kann nicht mit einem Wert vom Typ "const thrust :: device_reference PRP

+0

Oh, ich didn ' t bemerkt "Schub", ich bin nicht sicher, @PRP, nie verwendet. * Verwenden Sie immer das relevante Tag *! – gsamaras

+0

Ich denke, dieses Problem ist unabhängig von der verwendeten Bibliothek – PRP

Verwandte Themen