In mehreren kürzlich gehaltenen Konferenzpräsentationen habe ich gehört, dass Bjarne Stroustrup und andere neue Codierungsrichtlinien für C ++ und einige Typen, die diese unterstützen, erwähnt haben.
Insbesondere erinnere ich mich an das Beispiel von span<T>
anstelle von (T* p, int n)
als Parameter für eine Funktion (zur Zeit um 32:00 Uhr im Gespräch); aber ich erinnere mich auch an den Vorschlag zu verwenden array_view<T>
. Sind sie zwei Alternativen, aber das gleiche Konzept? Oder bin ich verwirrend und sie sind eigentlich nicht so verwandt?
Ich kann anscheinend keine maßgebliche Definition dafür finden, worum es bei beiden gehen soll.
array_view
wurde umbenannt inspan
.array_view
herumschwebt.Antworten:
Wir haben mit Leuten aus der Bibliotheksarbeitsgruppe im Normungsausschuss gesprochen . Sie wollten, dass das, was
array_view
sie versuchen, in den Standard zu gelangen, schreibgeschützt ist. Für die Kernrichtlinien brauchten wir eine Abstraktion, die gelesen und geschrieben wurde. Um einen Zusammenstoß zwischen den (potentiellen) Normen zu vermeiden und den Richtlinien unterstützen Bibliothek (GSL), wir umbenannt unsere (lesen und schreiben)array_view
aufspan
: https://github.com/microsoft/gsl .quelle
const array_view<T>
plusarray view<const T>
war nicht zufriedenstellend?span
dies viele Programmierer vor dummen Fehlern bewahren würde. Ich denke, die Kommunikation dieser neuen Änderungen könnte jedoch klarer erfolgen. Ich frage mich nur - wäre dies nicht etwas, das mit einem regulären Iterator mit wahlfreiem Zugriff so klar gelöst werden könnte? Wurde der Typ nur aus Gründen der Übersichtlichkeit hinzugefügt?In den CppCoreGuidlines Das Original
array_view
wurde in umbenanntspan
.Sehen: https://github.com/isocpp/CppCoreGuidelines/pull/377
Es wird folgendermaßen beschrieben:
quelle
Das Dokument P0122R (2016-02-12) der Library Evolution Working Group (LEWG)
benennt den Typ offiziell um
array_view
inspan
:Wir können auch lesen:
In einem nächsten Kapitel werden in diesem Dokument die schreibgeschützten und schreibgeschützten ( veränderlichen ) Zugriffe vorgestellt:
Siehe auch die Überprüfung
span<T>
der Guidelines Support Library: von Marius Bancila (März 2016), definiertspan
als:quelle