W kilku ostatnich prezentacjach konferencyjnych słyszałem, jak Bjarne Stroustrup i inni wspominali o nowych wytycznych kodowania dla C ++ i niektórych typach je wspierających.
W szczególności pamiętam przykład span<T>
zamiast (T* p, int n)
jako parametr funkcji (w czasie około 32:00 w trakcie rozmowy); ale pamiętam też sugestię użycia array_view<T>
. Czy to dwie alternatywy, ale ta sama koncepcja? A może mylę rzeczy i nie są one tak powiązane?
Nie mogę znaleźć żadnej autorytatywnej definicji tego, o czym obaj powinni być.
array_view
zmieniono nazwę naspan
.array_view
.Odpowiedzi:
Rozmawialiśmy z osobami z grupy roboczej biblioteki w komitecie normalizacyjnym . Chcieli, aby treść,
array_view
którą próbują dostać się do standardu, była tylko do odczytu. Aby uzyskać podstawowe wytyczne, potrzebowaliśmy abstrakcji, którą można było czytać i pisać. Aby uniknąć konfliktu między (potencjalnymi) standardami a biblioteką obsługi wytycznych (GSL), zmieniliśmy nazwę naszego (odczytu i zapisu)array_view
naspan
: https://github.com/microsoft/gsl .źródło
const array_view<T>
plusarray view<const T>
nie był zadowalający?span
że uratowałoby to wielu programistów przed popełnieniem głupich błędów. Myślę, że można by było przekazać te nowe zmiany w jaśniejszy sposób. Zastanawiam się tylko - czy nie byłoby to coś, co można rozwiązać tak wyraźnie za pomocą zwykłego iteratora dostępu swobodnego? Czy typ został dodany tylko dla jasności?W CppCoreGuidlines Oryginalna
array_view
nazwa została zmieniona naspan
.Zobacz: https://github.com/isocpp/CppCoreGuidelines/pull/377
Jest to opisane w ten sposób:
źródło
Dokument P0122R (12.02.2016) z Library Evolution Working Group (LEWG)
oficjalnie zmienia nazwę typu
array_view
naspan
:Możemy również przeczytać:
W następnym rozdziale ten dokument przedstawia dostęp tylko do odczytu i do odczytu i zapisu ( zmienny ):
Zobacz także Guidelines Support Library Review:
span<T>
Marius Bancila (marzec 2016) definiującspan
jako:źródło