Skip to content

Commit 370adff

Browse files
committed
Improve Span functionality
1 parent cce8347 commit 370adff

1 file changed

Lines changed: 6 additions & 5 deletions

File tree

Span.h

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include <cstddef>
55
#include <cstdint>
66

7+
#include <algorithm>
78
#include <array>
89
#include <type_traits>
910
#include <vector>
@@ -41,17 +42,17 @@ template <typename T> class Span {
4142
Span(T *p_begin, T *p_end) : p_data_(p_begin), size_(p_end - p_begin) {}
4243

4344
template <size_t N>
44-
Span(const std::array<typename remove_all_const<T>::type, N> &arr) : Span(arr.data(), arr.size()) {}
45+
Span(const std::array<typename remove_all_const<T>::type, N> &arr) : Span(static_cast<T *>(arr.data()), arr.size()) {}
4546
template <size_t N>
4647
Span(const std::array<const typename remove_all_const<T>::type, N> &arr) : Span(arr.data(), arr.size()) {}
47-
template <size_t N> Span(std::array<typename std::remove_cv<T>::type, N> &arr) : Span(arr.data(), arr.size()) {}
48+
template <size_t N> Span(std::array<typename std::remove_cv<T>::type, N> &arr) : Span(static_cast<T *>(arr.data()), arr.size()) {}
4849

4950
template <typename Alloc>
50-
Span(const std::vector<typename remove_all_const<T>::type, Alloc> &v) : Span(v.data(), v.size()) {}
51+
Span(const std::vector<typename remove_all_const<T>::type, Alloc> &v) : Span(static_cast<T *>(v.data()), v.size()) {}
5152
template <typename Alloc>
5253
Span(const std::vector<const typename remove_all_const<T>::type, Alloc> &v) : Span(v.data(), v.size()) {}
5354
template <typename Alloc>
54-
Span(std::vector<typename std::remove_cv<T>::type, Alloc> &v) : Span(v.data(), v.size()) {}
55+
Span(std::vector<typename std::remove_cv<T>::type, Alloc> &v) : Span(static_cast<T *>(v.data()), v.size()) {}
5556

5657
template <size_t N> Span(T (&arr)[N]) : Span(arr, N) {}
5758

@@ -187,4 +188,4 @@ template <typename T, typename U> bool operator>(Span<T> lhs, Span<U> rhs) { ret
187188
template <typename T, typename U> bool operator>=(Span<T> lhs, Span<U> rhs) { return !operator<(lhs, rhs); }
188189
} // namespace Ray
189190

190-
#undef force_inline
191+
#undef force_inline

0 commit comments

Comments
 (0)