From 3e42585f47a7c6abaa516cf2ed7b1e702ffd38ca Mon Sep 17 00:00:00 2001 From: Robert Schumacher Date: Tue, 23 Jan 2018 01:54:31 -0800 Subject: [vcpkg] Span usage improvements. --- toolsrc/include/vcpkg/base/span.h | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'toolsrc/include') diff --git a/toolsrc/include/vcpkg/base/span.h b/toolsrc/include/vcpkg/base/span.h index 158f1ac74..c9ac18afe 100644 --- a/toolsrc/include/vcpkg/base/span.h +++ b/toolsrc/include/vcpkg/base/span.h @@ -11,15 +11,17 @@ namespace vcpkg struct Span { public: + static_assert(!std::is_reference::value, "Span<&> is illegal"); + using element_type = T; - using pointer = T*; - using reference = T&; - using iterator = T*; + using pointer = std::add_pointer_t; + using reference = std::add_lvalue_reference_t; + using iterator = pointer; constexpr Span() noexcept : m_ptr(nullptr), m_count(0) {} constexpr Span(std::nullptr_t) noexcept : Span() {} - constexpr Span(T* ptr, size_t count) noexcept : m_ptr(ptr), m_count(count) {} - constexpr Span(T* ptr_begin, T* ptr_end) noexcept : m_ptr(ptr_begin), m_count(ptr_end - ptr_begin) {} + constexpr Span(pointer ptr, size_t count) noexcept : m_ptr(ptr), m_count(count) {} + constexpr Span(pointer ptr_begin, pointer ptr_end) noexcept : m_ptr(ptr_begin), m_count(ptr_end - ptr_begin) {} constexpr Span(std::initializer_list l) noexcept : m_ptr(l.begin()), m_count(l.size()) {} template @@ -69,4 +71,4 @@ namespace vcpkg { return sp.end(); } -} \ No newline at end of file +} -- cgit v1.2.3