@@ -24,7 +24,7 @@ namespace mstd {
24
24
25
25
inline constexpr size_t dynamic_extent = -1;
26
26
27
- template <typename, std:: size_t> class span;
27
+ template <typename, size_t = dynamic_extent > class span;
28
28
29
29
namespace detail {
30
30
@@ -70,14 +70,14 @@ template<typename, typename = void>
70
70
struct has_size : std::false_type {};
71
71
72
72
template<typename T>
73
- struct has_size<T, void_t<decltype(mstd::size(std ::declval<T>()))>>:
73
+ struct has_size<T, void_t<decltype(mstd::size(mstd ::declval<T>()))>>:
74
74
std::true_type {};
75
75
76
76
template<typename, typename = void>
77
77
struct has_data : std::false_type {};
78
78
79
79
template<typename T>
80
- struct has_data<T, void_t<decltype(mstd::data(std ::declval<T>()))>>:
80
+ struct has_data<T, void_t<decltype(mstd::data(mstd ::declval<T>()))>>:
81
81
std::true_type {};
82
82
83
83
template<typename T, typename U = mstd::remove_cvref_t<T>>
@@ -89,7 +89,7 @@ struct is_container{
89
89
};
90
90
91
91
template <class T>
92
- using iterator_t = decltype(mstd::begin(std ::declval<T&>()));
92
+ using iterator_t = decltype(mstd::begin(mstd ::declval<T&>()));
93
93
94
94
template <class R>
95
95
using range_reference_t = mstd::iter_reference_t<iterator_t<R>>;
@@ -103,12 +103,12 @@ struct is_compatible<T, E,
103
103
typename mstd::remove_cv_t<
104
104
decltype(mstd::data(mstd::declval<T>()))
105
105
>, void>::value>>:
106
- std ::is_convertible<remove_pointer_t<
106
+ mstd ::is_convertible<remove_pointer_t<
107
107
decltype(mstd::data(mstd::declval<T>()))> (*)[], E (*)[]>{};
108
108
109
109
} // namespace detail
110
110
111
- template<typename ElementType, size_t Extent = dynamic_extent >
111
+ template<typename ElementType, size_t Extent>
112
112
class span {
113
113
public:
114
114
using element_type = ElementType;
@@ -131,7 +131,7 @@ public:
131
131
{}
132
132
133
133
template<class It, size_t E = Extent,
134
- typename mstd::enable_if_t<is_convertible<
134
+ typename mstd::enable_if_t<mstd:: is_convertible<
135
135
remove_reference_t<mstd::iter_reference_t<It>>(*)[],
136
136
ElementType(*)[]>::value, int> = 0>
137
137
constexpr span(It ptr, index_type count) :
@@ -140,7 +140,7 @@ public:
140
140
MBED_ASSERT(extent == dynamic_extent || extent == count);
141
141
}
142
142
143
- template<class It, typename mstd::enable_if_t<is_convertible<
143
+ template<class It, typename mstd::enable_if_t<mstd:: is_convertible<
144
144
remove_reference_t<mstd::iter_reference_t<It>>(*)[],
145
145
ElementType(*)[]>::value, int> = 0>
146
146
constexpr span(It first, It last) :
@@ -154,23 +154,23 @@ public:
154
154
template<size_t N>
155
155
constexpr span(type_identity_t<element_type> (&arr)[N],
156
156
typename mstd::enable_if_t<(Extent == dynamic_extent || Extent == N) &&
157
- is_convertible<remove_pointer_t<decltype(mstd::data(arr))>(*)[],
157
+ mstd:: is_convertible<remove_pointer_t<decltype(mstd::data(arr))>(*)[],
158
158
ElementType(*)[]>::value, int> = 0) noexcept:
159
159
_storage(arr, N)
160
160
{}
161
161
162
162
template<class T, size_t N>
163
163
constexpr span(array<T, N>& arr,
164
164
typename mstd::enable_if_t<(Extent == dynamic_extent || Extent == N) &&
165
- is_convertible<remove_pointer_t<decltype(mstd::data(arr))>(*)[],
165
+ mstd:: is_convertible<remove_pointer_t<decltype(mstd::data(arr))>(*)[],
166
166
ElementType(*)[]>::value, int> = 0) noexcept:
167
167
_storage(arr.data(), N)
168
168
{}
169
169
170
170
template<class T, size_t N>
171
171
constexpr span(const array<T, N>& arr,
172
172
typename mstd::enable_if_t<(Extent == dynamic_extent || Extent == N) &&
173
- is_convertible<remove_pointer_t<decltype(mstd::data(arr))>(*)[],
173
+ mstd:: is_convertible<remove_pointer_t<decltype(mstd::data(arr))>(*)[],
174
174
ElementType(*)[]>::value, int> = 0) noexcept:
175
175
_storage(arr.data(), N)
176
176
{}
@@ -188,7 +188,7 @@ public:
188
188
189
189
template<class OtherElementType, size_t OtherExtent,
190
190
typename mstd::enable_if_t<(Extent == dynamic_extent || OtherExtent == Extent) &&
191
- is_convertible<OtherElementType(*)[], ElementType(*)[]>::value, int> = 0>
191
+ mstd: is_convertible<OtherElementType(*)[], ElementType(*)[]>::value, int> = 0>
192
192
constexpr span(const span<OtherElementType, OtherExtent>& s) noexcept:
193
193
_storage(s.data(), s.size())
194
194
{}
0 commit comments