4949#endif // _MSC_VER < 1910
5050#endif // _MSC_VER
5151
52- #ifdef GSL_THROW_ON_CONTRACT_VIOLATION
53- #define GSL_NOEXCEPT /*noexcept*/
54- #else
5552#define GSL_NOEXCEPT noexcept
56- #endif // GSL_THROW_ON_CONTRACT_VIOLATION
5753
5854namespace gsl
5955{
@@ -127,9 +123,7 @@ namespace details
127123
128124 constexpr span_iterator(const Span* span, typename Span::index_type idx) GSL_NOEXCEPT
129125 : span_(span), index_(idx)
130- {
131- Expects(span == nullptr || (0 <= index_ && index_ <= span_->size()));
132- }
126+ {}
133127
134128 friend span_iterator<Span, true>;
135129 template<bool B, std::enable_if_t<!B && IsConst>* = nullptr>
@@ -138,74 +132,74 @@ namespace details
138132 {
139133 }
140134
141- constexpr reference operator*() const GSL_NOEXCEPT
135+ constexpr reference operator*() const
142136 {
143137 Expects(index_ != span_->size());
144138 return *(span_->data() + index_);
145139 }
146140
147- constexpr pointer operator->() const GSL_NOEXCEPT
141+ constexpr pointer operator->() const
148142 {
149143 Expects(index_ != span_->size());
150144 return span_->data() + index_;
151145 }
152146
153- constexpr span_iterator& operator++() GSL_NOEXCEPT
147+ constexpr span_iterator& operator++()
154148 {
155149 Expects(0 <= index_ && index_ != span_->size());
156150 ++index_;
157151 return *this;
158152 }
159153
160- constexpr span_iterator operator++(int) GSL_NOEXCEPT
154+ constexpr span_iterator operator++(int)
161155 {
162156 auto ret = *this;
163157 ++(*this);
164158 return ret;
165159 }
166160
167- constexpr span_iterator& operator--() GSL_NOEXCEPT
161+ constexpr span_iterator& operator--()
168162 {
169163 Expects(index_ != 0 && index_ <= span_->size());
170164 --index_;
171165 return *this;
172166 }
173167
174- constexpr span_iterator operator--(int) GSL_NOEXCEPT
168+ constexpr span_iterator operator--(int)
175169 {
176170 auto ret = *this;
177171 --(*this);
178172 return ret;
179173 }
180174
181- constexpr span_iterator operator+(difference_type n) const GSL_NOEXCEPT
175+ constexpr span_iterator operator+(difference_type n) const
182176 {
183177 auto ret = *this;
184178 return ret += n;
185179 }
186180
187- constexpr span_iterator& operator+=(difference_type n) GSL_NOEXCEPT
181+ constexpr span_iterator& operator+=(difference_type n)
188182 {
189183 Expects((index_ + n) >= 0 && (index_ + n) <= span_->size());
190184 index_ += n;
191185 return *this;
192186 }
193187
194- constexpr span_iterator operator-(difference_type n) const GSL_NOEXCEPT
188+ constexpr span_iterator operator-(difference_type n) const
195189 {
196190 auto ret = *this;
197191 return ret -= n;
198192 }
199193
200- constexpr span_iterator& operator-=(difference_type n) GSL_NOEXCEPT { return *this += -n; }
194+ constexpr span_iterator& operator-=(difference_type n) { return *this += -n; }
201195
202- constexpr difference_type operator-(span_iterator rhs) const GSL_NOEXCEPT
196+ constexpr difference_type operator-(span_iterator rhs) const
203197 {
204198 Expects(span_ == rhs.span_);
205199 return index_ - rhs.index_;
206200 }
207201
208- constexpr reference operator[](difference_type n) const GSL_NOEXCEPT
202+ constexpr reference operator[](difference_type n) const
209203 {
210204 return *(*this + n);
211205 }
@@ -225,7 +219,6 @@ namespace details
225219 constexpr friend bool operator<(span_iterator lhs,
226220 span_iterator rhs) GSL_NOEXCEPT
227221 {
228- Expects(lhs.span_ == rhs.span_);
229222 return lhs.index_ < rhs.index_;
230223 }
231224
@@ -255,15 +248,15 @@ namespace details
255248 template <class Span, bool IsConst>
256249 constexpr span_iterator<Span, IsConst>
257250 operator+(typename span_iterator<Span, IsConst>::difference_type n,
258- span_iterator<Span, IsConst> rhs) GSL_NOEXCEPT
251+ span_iterator<Span, IsConst> rhs)
259252 {
260253 return rhs + n;
261254 }
262255
263256 template <class Span, bool IsConst>
264257 constexpr span_iterator<Span, IsConst>
265258 operator-(typename span_iterator<Span, IsConst>::difference_type n,
266- span_iterator<Span, IsConst> rhs) GSL_NOEXCEPT
259+ span_iterator<Span, IsConst> rhs)
267260 {
268261 return rhs - n;
269262 }
@@ -511,15 +504,15 @@ private:
511504 template <std::ptrdiff_t CallerExtent>
512505 span<element_type, dynamic_extent> make_subspan(index_type offset,
513506 index_type count,
514- subspan_selector<CallerExtent>) const GSL_NOEXCEPT
507+ subspan_selector<CallerExtent>) const
515508 {
516509 span<element_type, dynamic_extent> tmp(*this);
517510 return tmp.subspan(offset, count);
518511 }
519512
520513 span<element_type, dynamic_extent> make_subspan(index_type offset,
521514 index_type count,
522- subspan_selector<dynamic_extent>) const GSL_NOEXCEPT
515+ subspan_selector<dynamic_extent>) const
523516 {
524517 Expects(offset >= 0 && size() - offset >= 0);
525518 if (count == dynamic_extent)
@@ -631,7 +624,7 @@ constexpr span<ElementType> make_span(ElementType* firstElem, ElementType* lastE
631624}
632625
633626template <class ElementType, std::size_t N>
634- constexpr span<ElementType, N> make_span(ElementType (&arr)[N])
627+ constexpr span<ElementType, N> make_span(ElementType (&arr)[N]) GSL_NOEXCEPT
635628{
636629 return span<ElementType, N>(arr);
637630}
0 commit comments