9using span = std::span<Value>;
12#elif __has_include("base/containers/span.h")
14#include "base/containers/span.h"
17using span = base::span<Value>;
20#elif __has_include(<absl/types/span.h>)
22#include <absl/types/span.h>
25using span = absl::Span<Value>;
28#elif __has_include(<boost/core/span.hpp>)
30#include <boost/core/span.hpp>
33using span = boost::span<Value>;
36#elif __has_include(<boost/beast/core/span.hpp>)
39#include <boost/beast/core/span.hpp>
43class span :
public boost::beast::span<Value> {
45 span(Value* d, std::size_t n) : boost::beast::span<Value>{d, n} {}
48 span(std::vector<V2>
const& v)
49 : boost::beast::span<Value>{v.data(), v.size()} {}
51 span subspan(std::size_t off)
const {
52 return span{this->data() + off, this->size() - off};
54 Value& operator[](std::size_t i) {
return this->data()[i]; }
61 "No good implementation of span available. Implement one, move to a newer C++, or provide Boost or Abseil."