Weisen Sie einem std :: reference_wrapper einen Wert zu

8

Wie können wir einem Element, das von std::reference_wrapper umschlossen ist, einen Wert zuweisen?

%Vor%

Nach dem Fehler wird die direkte Zuweisung gelöscht:

  

Fehler: Verwendung der gelöschten Funktion   'std :: reference_wrapper & lt; _Tp & gt; :: reference_wrapper (_Tp & amp; & amp;) [mit _Tp =   int] '

    
deepmax 17.03.2013, 17:18
quelle

1 Antwort

11

Verwenden Sie die get() -Memberfunktion:

%Vor%

Hier ist eine Liste aller Mitgliedsfunktionen von std::reference_wrapper . Da ist ein operator= :

%Vor%

Das int-Literal wird in einen Referenzwrapper konvertiert, der fehlschlägt und die Fehlermeldung anzeigt, die Sie sehen.

Alternativ können Sie den Konvertierungsoperator explizit aufrufen ( static_cast<int&>(v[0]) = 1111; ), aber besser die Methode get() verwenden, wie oben gezeigt.

    
ipc 17.03.2013, 17:21
quelle

Tags und Links