Eradicate all the ptrdiff_ts in span left over from applying P1227. A couple of other minor cleanups. NFC

llvm-svn: 355481
This commit is contained in:
Marshall Clow 2019-03-06 03:59:44 +00:00
parent c2d6b84d3c
commit 8eda3ad29d
12 changed files with 66 additions and 67 deletions

View File

@ -25,11 +25,11 @@ template <class ElementType, size_t Extent = dynamic_extent>
// [span.objectrep], views of object representation
template <class ElementType, size_t Extent>
span<const byte, ((Extent == dynamic_extent) ? dynamic_extent :
(static_cast<ptrdiff_t>(sizeof(ElementType)) * Extent))> as_bytes(span<ElementType, Extent> s) noexcept;
(sizeof(ElementType) * Extent))> as_bytes(span<ElementType, Extent> s) noexcept;
template <class ElementType, size_t Extent>
span< byte, ((Extent == dynamic_extent) ? dynamic_extent :
(static_cast<ptrdiff_t>(sizeof(ElementType)) * Extent))> as_writable_bytes(span<ElementType, Extent> s) noexcept;
(sizeof(ElementType) * Extent))> as_writable_bytes(span<ElementType, Extent> s) noexcept;
namespace std {
@ -207,7 +207,6 @@ public:
using const_reverse_iterator = _VSTD::reverse_iterator<const_iterator>;
static constexpr index_type extent = _Extent;
static_assert (_Extent >= 0, "Can't have a span with an extent < 0");
// [span.cons], span constructors, copy, assignment, and destructor
_LIBCPP_INLINE_VISIBILITY constexpr span() noexcept : __data{nullptr}
@ -226,7 +225,7 @@ public:
_LIBCPP_INLINE_VISIBILITY constexpr span(const array<value_type, _Extent>& __arr) noexcept : __data{__arr.data()} {}
template <class _OtherElementType>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_INLINE_VISIBILITY
constexpr span(const span<_OtherElementType, _Extent>& __other,
enable_if_t<
is_convertible_v<_OtherElementType(*)[], element_type (*)[]>,
@ -234,7 +233,7 @@ public:
: __data{__other.data()} {}
template <class _OtherElementType>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_INLINE_VISIBILITY
constexpr span(const span<_OtherElementType, dynamic_extent>& __other,
enable_if_t<
is_convertible_v<_OtherElementType(*)[], element_type (*)[]>,
@ -245,16 +244,16 @@ public:
// ~span() noexcept = default;
template <size_t _Count>
inline _LIBCPP_INLINE_VISIBILITY
constexpr span<element_type, _Count> first() const noexcept
_LIBCPP_INLINE_VISIBILITY
constexpr span<element_type, _Count> first() const noexcept
{
static_assert(_Count <= _Extent, "Count out of range in span::first()");
return {data(), _Count};
}
template <size_t _Count>
inline _LIBCPP_INLINE_VISIBILITY
constexpr span<element_type, _Count> last() const noexcept
_LIBCPP_INLINE_VISIBILITY
constexpr span<element_type, _Count> last() const noexcept
{
static_assert(_Count <= _Extent, "Count out of range in span::last()");
return {data() + size() - _Count, _Count};
@ -263,36 +262,36 @@ public:
_LIBCPP_INLINE_VISIBILITY
constexpr span<element_type, dynamic_extent> first(index_type __count) const noexcept
{
_LIBCPP_ASSERT(__count >= 0 && __count <= size(), "Count out of range in span::first(count)");
_LIBCPP_ASSERT(__count <= size(), "Count out of range in span::first(count)");
return {data(), __count};
}
_LIBCPP_INLINE_VISIBILITY
constexpr span<element_type, dynamic_extent> last(index_type __count) const noexcept
{
_LIBCPP_ASSERT(__count >= 0 && __count <= size(), "Count out of range in span::last(count)");
_LIBCPP_ASSERT(__count <= size(), "Count out of range in span::last(count)");
return {data() + size() - __count, __count};
}
template <size_t _Offset, size_t _Count = dynamic_extent>
inline _LIBCPP_INLINE_VISIBILITY
constexpr auto subspan() const noexcept
_LIBCPP_INLINE_VISIBILITY
constexpr auto subspan() const noexcept
-> span<element_type, _Count != dynamic_extent ? _Count : _Extent - _Offset>
{
_LIBCPP_ASSERT(_Offset >= 0 && _Offset <= size(), "Offset out of range in span::subspan()");
static_assert(_Offset <= _Extent, "Offset out of range in span::subspan()");
return {data() + _Offset, _Count == dynamic_extent ? size() - _Offset : _Count};
}
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_INLINE_VISIBILITY
constexpr span<element_type, dynamic_extent>
subspan(index_type __offset, index_type __count = dynamic_extent) const noexcept
{
_LIBCPP_ASSERT( __offset >= 0 && __offset <= size(), "Offset out of range in span::subspan(offset, count)");
_LIBCPP_ASSERT((__count >= 0 && __count <= size()) || __count == dynamic_extent, "Count out of range in span::subspan(offset, count)");
_LIBCPP_ASSERT(__offset <= size(), "Offset out of range in span::subspan(offset, count)");
_LIBCPP_ASSERT(__count <= size() || __count == dynamic_extent, "Count out of range in span::subspan(offset, count)");
if (__count == dynamic_extent)
return {data() + __offset, size() - __offset};
_LIBCPP_ASSERT(__offset + __count <= size(), "count + offset out of range in span::subspan(offset, count)");
_LIBCPP_ASSERT(__offset <= size() - __count, "count + offset out of range in span::subspan(offset, count)");
return {data() + __offset, __count};
}
@ -380,32 +379,32 @@ public:
_LIBCPP_INLINE_VISIBILITY constexpr span(pointer __f, pointer __l) : __data{__f}, __size{static_cast<size_t>(distance(__f, __l))} {}
template <size_t _Sz>
inline _LIBCPP_INLINE_VISIBILITY
constexpr span(element_type (&__arr)[_Sz]) noexcept : __data{__arr}, __size{_Sz} {}
_LIBCPP_INLINE_VISIBILITY
constexpr span(element_type (&__arr)[_Sz]) noexcept : __data{__arr}, __size{_Sz} {}
template <size_t _Sz>
inline _LIBCPP_INLINE_VISIBILITY
constexpr span(array<value_type, _Sz>& __arr) noexcept : __data{__arr.data()}, __size{_Sz} {}
_LIBCPP_INLINE_VISIBILITY
constexpr span(array<value_type, _Sz>& __arr) noexcept : __data{__arr.data()}, __size{_Sz} {}
template <size_t _Sz>
inline _LIBCPP_INLINE_VISIBILITY
constexpr span(const array<value_type, _Sz>& __arr) noexcept : __data{__arr.data()}, __size{_Sz} {}
_LIBCPP_INLINE_VISIBILITY
constexpr span(const array<value_type, _Sz>& __arr) noexcept : __data{__arr.data()}, __size{_Sz} {}
template <class _Container>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_INLINE_VISIBILITY
constexpr span( _Container& __c,
enable_if_t<__is_span_compatible_container<_Container, _Tp>::value, nullptr_t> = nullptr)
: __data{_VSTD::data(__c)}, __size{(index_type) _VSTD::size(__c)} {}
template <class _Container>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_INLINE_VISIBILITY
constexpr span(const _Container& __c,
enable_if_t<__is_span_compatible_container<const _Container, _Tp>::value, nullptr_t> = nullptr)
: __data{_VSTD::data(__c)}, __size{(index_type) _VSTD::size(__c)} {}
template <class _OtherElementType, size_t _OtherExtent>
inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_INLINE_VISIBILITY
constexpr span(const span<_OtherElementType, _OtherExtent>& __other,
enable_if_t<
is_convertible_v<_OtherElementType(*)[], element_type (*)[]>,
@ -415,16 +414,16 @@ public:
// ~span() noexcept = default;
template <size_t _Count>
inline _LIBCPP_INLINE_VISIBILITY
constexpr span<element_type, _Count> first() const noexcept
_LIBCPP_INLINE_VISIBILITY
constexpr span<element_type, _Count> first() const noexcept
{
_LIBCPP_ASSERT(_Count <= size(), "Count out of range in span::first()");
return {data(), _Count};
}
template <size_t _Count>
inline _LIBCPP_INLINE_VISIBILITY
constexpr span<element_type, _Count> last() const noexcept
_LIBCPP_INLINE_VISIBILITY
constexpr span<element_type, _Count> last() const noexcept
{
_LIBCPP_ASSERT(_Count <= size(), "Count out of range in span::last()");
return {data() + size() - _Count, _Count};
@ -433,35 +432,35 @@ public:
_LIBCPP_INLINE_VISIBILITY
constexpr span<element_type, dynamic_extent> first(index_type __count) const noexcept
{
_LIBCPP_ASSERT(__count >= 0 && __count <= size(), "Count out of range in span::first(count)");
_LIBCPP_ASSERT(__count <= size(), "Count out of range in span::first(count)");
return {data(), __count};
}
_LIBCPP_INLINE_VISIBILITY
constexpr span<element_type, dynamic_extent> last (index_type __count) const noexcept
{
_LIBCPP_ASSERT(__count >= 0 && __count <= size(), "Count out of range in span::last(count)");
_LIBCPP_ASSERT(__count <= size(), "Count out of range in span::last(count)");
return {data() + size() - __count, __count};
}
template <size_t _Offset, size_t _Count = dynamic_extent>
inline _LIBCPP_INLINE_VISIBILITY
constexpr span<_Tp, dynamic_extent> subspan() const noexcept
_LIBCPP_INLINE_VISIBILITY
constexpr span<_Tp, dynamic_extent> subspan() const noexcept
{
_LIBCPP_ASSERT(_Offset >= 0 && _Offset <= size(), "Offset out of range in span::subspan()");
_LIBCPP_ASSERT(_Offset <= size(), "Offset out of range in span::subspan()");
_LIBCPP_ASSERT(_Count == dynamic_extent || _Offset + _Count <= size(), "Count out of range in span::subspan()");
return {data() + _Offset, _Count == dynamic_extent ? size() - _Offset : _Count};
}
constexpr span<element_type, dynamic_extent>
inline _LIBCPP_INLINE_VISIBILITY
subspan(index_type __offset, index_type __count = dynamic_extent) const noexcept
_LIBCPP_INLINE_VISIBILITY
subspan(index_type __offset, index_type __count = dynamic_extent) const noexcept
{
_LIBCPP_ASSERT( __offset >= 0 && __offset <= size(), "Offset out of range in span::subspan(offset, count)");
_LIBCPP_ASSERT((__count >= 0 && __count <= size()) || __count == dynamic_extent, "count out of range in span::subspan(offset, count)");
_LIBCPP_ASSERT(__offset <= size(), "Offset out of range in span::subspan(offset, count)");
_LIBCPP_ASSERT(__count <= size() || __count == dynamic_extent, "count out of range in span::subspan(offset, count)");
if (__count == dynamic_extent)
return {data() + __offset, size() - __offset};
_LIBCPP_ASSERT(__offset + __count <= size(), "Offset + count out of range in span::subspan(offset, count)");
_LIBCPP_ASSERT(__offset <= size() - __count, "Offset + count out of range in span::subspan(offset, count)");
return {data() + __offset, __count};
}

View File

@ -10,7 +10,7 @@
// <span>
// template<class OtherElementType, ptrdiff_t OtherExtent>
// template<class OtherElementType, size_t OtherExtent>
// constexpr span(const span<OtherElementType, OtherExtent>& s) noexcept;
//
// Remarks: This constructor shall not participate in overload resolution unless:

View File

@ -10,7 +10,7 @@
// <span>
// template<class OtherElementType, ptrdiff_t OtherExtent>
// template<class OtherElementType, size_t OtherExtent>
// constexpr span(const span<OtherElementType, OtherExtent>& s) noexcept;
//
// Remarks: This constructor shall not participate in overload resolution unless:

View File

@ -23,7 +23,7 @@
template <typename Span>
constexpr bool testConstexprSpan(Span sp, ptrdiff_t idx)
constexpr bool testConstexprSpan(Span sp, size_t idx)
{
_LIBCPP_ASSERT(noexcept(sp[idx]), "");
@ -34,7 +34,7 @@ constexpr bool testConstexprSpan(Span sp, ptrdiff_t idx)
template <typename Span>
void testRuntimeSpan(Span sp, ptrdiff_t idx)
void testRuntimeSpan(Span sp, size_t idx)
{
_LIBCPP_ASSERT(noexcept(sp[idx]), "");

View File

@ -10,11 +10,11 @@
// <span>
// template <class ElementType, ptrdiff_t Extent>
// template <class ElementType, size_t Extent>
// span<const byte,
// Extent == dynamic_extent
// ? dynamic_extent
// : static_cast<ptrdiff_t>(sizeof(ElementType)) * Extent>
// : sizeof(ElementType) * Extent>
// as_bytes(span<ElementType, Extent> s) noexcept;
@ -36,7 +36,7 @@ void testRuntimeSpan(Span sp)
if (sp.extent == std::dynamic_extent)
assert(spBytes.extent == std::dynamic_extent);
else
assert(spBytes.extent == static_cast<std::ptrdiff_t>(sizeof(typename Span::element_type)) * sp.extent);
assert(spBytes.extent == sizeof(typename Span::element_type) * sp.extent);
assert((void *) spBytes.data() == (void *) sp.data());
assert(spBytes.size() == sp.size_bytes());

View File

@ -10,11 +10,11 @@
// <span>
// template <class ElementType, ptrdiff_t Extent>
// template <class ElementType, size_t Extent>
// span<byte,
// Extent == dynamic_extent
// ? dynamic_extent
// : static_cast<ptrdiff_t>(sizeof(ElementType)) * Extent>
// : sizeof(ElementType) * Extent>
// as_writeable_bytes(span<ElementType, Extent> s) noexcept;

View File

@ -10,11 +10,11 @@
// <span>
// template <class ElementType, ptrdiff_t Extent>
// template <class ElementType, size_t Extent>
// span<byte,
// Extent == dynamic_extent
// ? dynamic_extent
// : static_cast<ptrdiff_t>(sizeof(ElementType)) * Extent>
// : sizeof(ElementType) * Extent>
// as_writeable_bytes(span<ElementType, Extent> s) noexcept;
@ -36,7 +36,7 @@ void testRuntimeSpan(Span sp)
if (sp.extent == std::dynamic_extent)
assert(spBytes.extent == std::dynamic_extent);
else
assert(spBytes.extent == static_cast<std::ptrdiff_t>(sizeof(typename Span::element_type)) * sp.extent);
assert(spBytes.extent == sizeof(typename Span::element_type) * sp.extent);
assert(static_cast<void*>(spBytes.data()) == static_cast<void*>(sp.data()));
assert(spBytes.size() == sp.size_bytes());

View File

@ -23,7 +23,7 @@
template <typename Span>
constexpr bool testConstexprSpan(Span sp, ptrdiff_t sz)
constexpr bool testConstexprSpan(Span sp, size_t sz)
{
ASSERT_NOEXCEPT(sp.size_bytes());
return (size_t) sp.size_bytes() == sz * sizeof(typename Span::element_type);
@ -31,7 +31,7 @@ constexpr bool testConstexprSpan(Span sp, ptrdiff_t sz)
template <typename Span>
void testRuntimeSpan(Span sp, ptrdiff_t sz)
void testRuntimeSpan(Span sp, size_t sz)
{
ASSERT_NOEXCEPT(sp.size_bytes());
assert((size_t) sp.size_bytes() == sz * sizeof(typename Span::element_type));

View File

@ -10,7 +10,7 @@
// <span>
// template<ptrdiff_t Count>
// template<size_t Count>
// constexpr span<element_type, Count> first() const;
//
// constexpr span<element_type, dynamic_extent> first(index_type count) const;
@ -25,7 +25,7 @@
#include "test_macros.h"
template <typename Span, ptrdiff_t Count>
template <typename Span, size_t Count>
constexpr bool testConstexprSpan(Span sp)
{
LIBCPP_ASSERT((noexcept(sp.template first<Count>())));
@ -45,7 +45,7 @@ constexpr bool testConstexprSpan(Span sp)
}
template <typename Span, ptrdiff_t Count>
template <typename Span, size_t Count>
void testRuntimeSpan(Span sp)
{
LIBCPP_ASSERT((noexcept(sp.template first<Count>())));

View File

@ -10,7 +10,7 @@
// <span>
// template<ptrdiff_t Count>
// template<size_t Count>
// constexpr span<element_type, Count> last() const;
//
// constexpr span<element_type, dynamic_extent> last(index_type count) const;
@ -25,7 +25,7 @@
#include "test_macros.h"
template <typename Span, ptrdiff_t Count>
template <typename Span, size_t Count>
constexpr bool testConstexprSpan(Span sp)
{
LIBCPP_ASSERT((noexcept(sp.template last<Count>())));
@ -45,7 +45,7 @@ constexpr bool testConstexprSpan(Span sp)
}
template <typename Span, ptrdiff_t Count>
template <typename Span, size_t Count>
void testRuntimeSpan(Span sp)
{
LIBCPP_ASSERT((noexcept(sp.template last<Count>())));

View File

@ -10,7 +10,7 @@
// <span>
// template<ptrdiff_t Offset, ptrdiff_t Count = dynamic_extent>
// template<size_t Offset, size_t Count = dynamic_extent>
// constexpr span<element_type, see below> subspan() const;
//
// constexpr span<element_type, dynamic_extent> subspan(
@ -26,7 +26,7 @@
#include "test_macros.h"
template <typename Span, ptrdiff_t Offset, ptrdiff_t Count>
template <typename Span, size_t Offset, size_t Count>
constexpr bool testConstexprSpan(Span sp)
{
LIBCPP_ASSERT((noexcept(sp.template subspan<Offset, Count>())));
@ -45,7 +45,7 @@ constexpr bool testConstexprSpan(Span sp)
&& std::equal(s1.begin(), s1.end(), sp.begin() + Offset);
}
template <typename Span, ptrdiff_t Offset>
template <typename Span, size_t Offset>
constexpr bool testConstexprSpan(Span sp)
{
LIBCPP_ASSERT((noexcept(sp.template subspan<Offset>())));
@ -65,7 +65,7 @@ constexpr bool testConstexprSpan(Span sp)
}
template <typename Span, ptrdiff_t Offset, ptrdiff_t Count>
template <typename Span, size_t Offset, size_t Count>
void testRuntimeSpan(Span sp)
{
LIBCPP_ASSERT((noexcept(sp.template subspan<Offset, Count>())));
@ -84,7 +84,7 @@ void testRuntimeSpan(Span sp)
}
template <typename Span, ptrdiff_t Offset>
template <typename Span, size_t Offset>
void testRuntimeSpan(Span sp)
{
LIBCPP_ASSERT((noexcept(sp.template subspan<Offset>())));

View File

@ -10,7 +10,7 @@
// <span>
// template<class ElementType, ptrdiff_t Extent = dynamic_extent>
// template<class ElementType, size_t Extent = dynamic_extent>
// class span {
// public:
// // constants and types