2017-07-16 2 views

Antwort

4

Wie Sie bereits gesagt haben, ist das perfekte Beispiel, wo Sie keinen Lvalue haben, std::vector<bool>. Die Verwendung von auto& wird nicht kompiliert, da ein Prvalue vom Iterator zurückgegeben wird.

Es ist mir auch manchmal passiert, Bereiche zu machen, die keinen Ivalue von ihrem Iterator zurückgegeben haben.

Auch die Oberseite der Verwendung auto&& ist, dass es keine Fälle gibt, in denen es nicht funktioniert. Selbst wenn Sie einen bizarren Fall haben, in dem Ihr Iterator einen konstanten Referenzwert liefert, wird auto&& an ihn binden.

Zum Lehren ist es auch einfacher zu sagen "Verwenden Sie auto&& in Ihren For-Schleifen." weil es keine Kopie verursacht und überall funktioniert.

Dort, wo auch ein Vorschlag implizite auto&& zu ermöglichen, und aktivieren Sie die Syntax for (x : range) (Ich kann mich nicht erinnern, was es ist. Wenn Sie es wissen, bitte sagen Sie mir in den Kommentaren)

+0

* Terse 'for' * Schleifen, wenn der Speicher dient. – Quentin

+0

Dieser Vorschlag stürzte und brannte. Ich sehe nicht viel daran, es zu erwähnen. –

Verwandte Themen