В нескольких недавних презентациях на конференции я слышал, как Бьярн Страуструп и другие упоминали о новых правилах кодирования для C ++ и некоторых поддерживающих их типах.
В частности, я помню пример span<T>
вместо вместо (T* p, int n)
параметра функции (примерно в 32:00 до начала разговора); но я также помню предложение использовать array_view<T>
. Это две альтернативы, но одна и та же концепция? Или я путаю вещи, и они на самом деле не так связаны?
Кажется, я не могу найти авторитетного определения того, чем они оба должны заниматься.
array_view
его переименовали вspan
.array_view
плавающих вокруг.Ответы:
Мы поговорили с людьми из рабочей группы библиотеки в комитете по стандартам . Они хотели
array_view
, чтобы этот стандарт был доступен только для чтения. Для основных рекомендаций нам нужна была абстракция, которая была доступна для чтения и записи. Чтобы избежать столкновения между (потенциальными) стандартами и библиотекой поддержки руководств (GSL), мы переименовали наш (чтение и запись)array_view
вspan
: https://github.com/microsoft/gsl .источник
const array_view<T>
плюсarray view<const T>
не удовлетворил?span
это спасет многих программистов от совершения глупых ошибок. Я думаю, что можно было бы сообщить об этих новых изменениях более четким способом. Мне просто интересно - разве это не может быть решено так же ясно с помощью обычного итератора с произвольным доступом? Тип добавлен только для ясности?В CppCoreGuidlines Оригинал
array_view
был переименован вspan
.См .: https://github.com/isocpp/CppCoreGuidelines/pull/377
Это описывается так:
источник
В документе P0122R (2016-02-12) Рабочей группы по эволюции библиотек (LEWG)
тип официально переименовывается
array_view
вspan
:Мы также можем прочитать:
В следующей главе эти документы представляют доступ только для чтения и чтения-записи ( изменяемый ):
См. Также Обзор библиотеки поддержки рекомендаций:
span<T>
от Мариуса Бансила (март 2016 г.), определяющегоspan
как:источник