diff options
| author | Robert Schumacher <roschuma@microsoft.com> | 2018-01-23 01:54:31 -0800 |
|---|---|---|
| committer | Robert Schumacher <roschuma@microsoft.com> | 2018-01-23 01:54:31 -0800 |
| commit | 3e42585f47a7c6abaa516cf2ed7b1e702ffd38ca (patch) | |
| tree | 32ddc6a9a16ddaa46a729dad33f1701853d26f13 /toolsrc/include | |
| parent | 0682bb734d5f8667d5aa1a8c2448d69fc042c53f (diff) | |
| download | vcpkg-3e42585f47a7c6abaa516cf2ed7b1e702ffd38ca.tar.gz vcpkg-3e42585f47a7c6abaa516cf2ed7b1e702ffd38ca.zip | |
[vcpkg] Span usage improvements.
Diffstat (limited to 'toolsrc/include')
| -rw-r--r-- | toolsrc/include/vcpkg/base/span.h | 14 |
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 +}
|
