From 2c8421e1c6cef0da9e8a20b01c15256ec9ec116d Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Thu, 28 Mar 2019 11:12:19 -0700 Subject: Export of internal Abseil changes. -- fcf9d3facb12451964ad1850073cbfb6f9739379 by CJ Johnson : Makes it obvious to readers that the comparison operators do not branch more than needed PiperOrigin-RevId: 240811527 -- 680c586f81f805be68e96caffb28d5f46b6a6511 by Jon Cohen : Consistently use "if(" instead of "if (" in CMake files PiperOrigin-RevId: 240621819 -- c4acc506648622389f33f564fd94f8dda08cb61a by Tom Manshreck : Internal change PiperOrigin-RevId: 240619556 -- ddbc1894944aae96767c876a1ae8696ddaba42a2 by Jon Cohen : Remove the warning about install prefixes when we aren't installing abseil PiperOrigin-RevId: 240614750 -- 086c4fad213d99e875038bc8a1c7268e28a7ebf3 by Abseil Team : Adjust some tests and test cases which fail on WebAssembly PiperOrigin-RevId: 240592367 -- 46c2c09723a37ef4911ae3c64aab92e3f0fdba79 by Abseil Team : CMake install target update - Add prefix absl_ to each target when install rule are disabled. - Disable all install commands when absl is used as subdirectory (Fix #287) PiperOrigin-RevId: 240575083 -- 8d88063ed5b16f982a91950693d37ca18fdd46d8 by Jon Cohen : Correctly link to Threads::Threads for a few cmake targets which were missing it. PiperOrigin-RevId: 240574513 GitOrigin-RevId: fcf9d3facb12451964ad1850073cbfb6f9739379 Change-Id: I031c57de8cd88554348eb8bd1371d01d15ff1fc7 --- absl/types/span.h | 100 ++---------------------------------------------------- 1 file changed, 2 insertions(+), 98 deletions(-) (limited to 'absl/types/span.h') diff --git a/absl/types/span.h b/absl/types/span.h index e5c4fe1..b007fc1 100644 --- a/absl/types/span.h +++ b/absl/types/span.h @@ -60,114 +60,18 @@ #include #include #include -#include #include #include -#include "absl/algorithm/algorithm.h" #include "absl/base/internal/throw_delegate.h" #include "absl/base/macros.h" #include "absl/base/optimization.h" -#include "absl/base/port.h" +#include "absl/base/port.h" // TODO(strel): remove this include #include "absl/meta/type_traits.h" +#include "absl/types/internal/span.h" namespace absl { -namespace span_internal { -// A constexpr min function -constexpr size_t Min(size_t a, size_t b) noexcept { return a < b ? a : b; } - -// Wrappers for access to container data pointers. -template -constexpr auto GetDataImpl(C& c, char) noexcept // NOLINT(runtime/references) - -> decltype(c.data()) { - return c.data(); -} - -// Before C++17, std::string::data returns a const char* in all cases. -inline char* GetDataImpl(std::string& s, // NOLINT(runtime/references) - int) noexcept { - return &s[0]; -} - -template -constexpr auto GetData(C& c) noexcept // NOLINT(runtime/references) - -> decltype(GetDataImpl(c, 0)) { - return GetDataImpl(c, 0); -} - -// Detection idioms for size() and data(). -template -using HasSize = - std::is_integral().size())>>; - -// We want to enable conversion from vector to Span but -// disable conversion from vector to Span. Here we use -// the fact that U** is convertible to Q* const* if and only if Q is the same -// type or a more cv-qualified version of U. We also decay the result type of -// data() to avoid problems with classes which have a member function data() -// which returns a reference. -template -using HasData = - std::is_convertible()))>*, - T* const*>; - -// Extracts value type from a Container -template -struct ElementType { - using type = typename absl::remove_reference_t::value_type; -}; - -template -struct ElementType { - using type = T; -}; - -template -using ElementT = typename ElementType::type; - -template -using EnableIfMutable = - typename std::enable_if::value, int>::type; - -template