В его Основные положения C ++, Бьярн Страуструп рекомендует использовать span при передаче массивов по ссылке. Почему бы просто не передать объект std :: array?
Переходя std::array
по значению будет копирование их. Точка gsl::span
является то, что функция, принимающая их, ссылается на существующий массив данных.
gsl::span
способен принимать массивы заданных размеров во время выполнения. std::array
исправлено во время компиляции.
gsl::span
не волнует, какой тип владеет массивом; это просто указатель + размер. Так что span
на основе интерфейса могут быть поданы данные из std::vector
, QVector
и многие другие. std::array
основанный интерфейс требует что вы используете этот конкретный контейнер.
Других решений пока нет …