Skip to content

Latest commit

 

History

History
49 lines (37 loc) · 2.66 KB

span.md

File metadata and controls

49 lines (37 loc) · 2.66 KB

Why span<T> is superior?

Definition in English

span n   Distance from end to end (portée)
      Length of a bridge (travée)
      Width of a hand (écartement)
      [...]

Definition in C++

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 as array_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 as std::vector or std::array).

From meeting minutes of the C++ working group Library Evolution Working Group (LEWG)

Changelog

Changes from R0
  • Changed the name of the type being proposed from array_view to span following feedback from LEWG at the Kona meeting.

Impact on the Standard

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.

Source code

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.