aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/include
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2018-01-23 01:54:31 -0800
committerRobert Schumacher <roschuma@microsoft.com>2018-01-23 01:54:31 -0800
commit3e42585f47a7c6abaa516cf2ed7b1e702ffd38ca (patch)
tree32ddc6a9a16ddaa46a729dad33f1701853d26f13 /toolsrc/include
parent0682bb734d5f8667d5aa1a8c2448d69fc042c53f (diff)
downloadvcpkg-3e42585f47a7c6abaa516cf2ed7b1e702ffd38ca.tar.gz
vcpkg-3e42585f47a7c6abaa516cf2ed7b1e702ffd38ca.zip
[vcpkg] Span usage improvements.
Diffstat (limited to 'toolsrc/include')
-rw-r--r--toolsrc/include/vcpkg/base/span.h14
1 files changed, 8 insertions, 6 deletions
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<T>::value, "Span<&> is illegal");
+
using element_type = T;
- using pointer = T*;
- using reference = T&;
- using iterator = T*;
+ using pointer = std::add_pointer_t<T>;
+ using reference = std::add_lvalue_reference_t<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<T> l) noexcept : m_ptr(l.begin()), m_count(l.size()) {}
template<size_t N>
@@ -69,4 +71,4 @@ namespace vcpkg
{
return sp.end();
}
-} \ No newline at end of file
+}