span n Distance from end to end (portée)
Length of a bridge (travée)
Width of a hand (écartement)
[...]
From codexpert blog: Guidelines Support Library Review: span<T>
(march 2016)
The Guidelines Support Library is a Microsoft implementation of some of the types and functions described in the C++ Core Guidelines maintained by the Standard C++ Foundation. Among the types provided by the GSL is
span<T>
formerly known asarray_view<T>
.
span<T>
is a non-owning range of contiguous memory recommended to be used instead of pointers (and size counter) or standard containers (such asstd::vector
orstd::array
).
From meeting minutes of the C++ working group Library Evolution Working Group (LEWG)
- Changed the name of the type being proposed from
array_view
tospan
following feedback from LEWG at the Kona meeting.
This proposal is a pure library extension. It does not require any changes to standard classes, functions, or headers. It would be enhanced if could depends on the
byte
type and changes to type aliasing behavior proposed in P0257.However – if adopted – it may be useful to overload some standard library functions for this new type (an example would be
copy()
).
span
has been implemented in standard C++ (C++11) and is being successfully used within a commercial static analysis tool for C++ code as well as commercial office productivity software. An open source, reference implementation is available at https://github.com/Microsoft/GSL.
Header file span.h
in repo GitHub/Microsoft/GSL is 2225 lines (1889 sloc) 77 KB weight as of 13rd January 2016.
- class
span
starts at about line 1200 - 15 lines of Copyright notice
- 100 lines of specific workarounds for Visual C++
There is not yet any GNU or Clang implementation.