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
187188template <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