In meiner API habe ich eine Funktion, die std::istringstream
zurückgibt.
Die std::istringstream
class ist nicht kopierbar, unterstützt aber das Verschieben auf einen entsprechenden Compiler, es gibt kein Problem, einen lokalen std::istringstream
zurückgeben.Problemumgehung für die Rückgabe von nicht kopierbaren Objekt ohne eine Verschiebung ctor
Auf gcc 4.9 gibt es jedoch no support zum Verschieben std::istringstream
. Gibt es eine Problemumgehung, die ich std::istringstream
verwenden kann, ohne die API aus der Sicht des Benutzers zu ändern?
Die vorgeschlagene Umgehungslösung here, die Verwendung eines unique_ptr<std::istringstream>
wird die Semantik der API ändern.
Ich sehe nicht, wie Sie eine Abhilfe haben können, wenn Sie nicht den Rückgabetyp ändern können. – NathanOliver
Nun, sagen wir, ich nehme das Ergebnis mit 'auto' (oder verwende es einfach als temporäres) - damit du etwas anderes zurückgeben kannst. Ich denke jetzt, dass es möglich ist, einen Wrapper mit derselben Schnittstelle zu erstellen und diesen zurückzugeben. –
Der Wrapper würde das gleiche Problem treffen. Sie können den Stream nicht in den Wrapper verschieben und Sie können ihn nicht kopieren. Wie erhalten Sie den Wrapper also aus der Funktion? – NathanOliver