@@ -210,91 +210,110 @@ struct array {
210210 }
211211
212212 // iterators:
213- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 iterator begin () _NOEXCEPT {
213+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 iterator begin () _NOEXCEPT {
214214# if defined(_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STD_ARRAY)
215215 return std::__make_static_bounded_iter<_Size>(data (), data ());
216216# else
217217 return iterator (data ());
218218# endif
219219 }
220- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_iterator begin () const _NOEXCEPT {
220+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_iterator begin () const _NOEXCEPT {
221221# if defined(_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STD_ARRAY)
222222 return std::__make_static_bounded_iter<_Size>(data (), data ());
223223# else
224224 return const_iterator (data ());
225225# endif
226226 }
227- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 iterator end () _NOEXCEPT {
227+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 iterator end () _NOEXCEPT {
228228# if defined(_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STD_ARRAY)
229229 return std::__make_static_bounded_iter<_Size>(data () + _Size, data ());
230230# else
231231 return iterator (data () + _Size);
232232# endif
233233 }
234- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_iterator end () const _NOEXCEPT {
234+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_iterator end () const _NOEXCEPT {
235235# if defined(_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STD_ARRAY)
236236 return std::__make_static_bounded_iter<_Size>(data () + _Size, data ());
237237# else
238238 return const_iterator (data () + _Size);
239239# endif
240240 }
241241
242- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reverse_iterator rbegin () _NOEXCEPT {
242+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reverse_iterator rbegin () _NOEXCEPT {
243243 return reverse_iterator (end ());
244244 }
245- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_reverse_iterator rbegin () const _NOEXCEPT {
245+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_reverse_iterator
246+ rbegin () const _NOEXCEPT {
246247 return const_reverse_iterator (end ());
247248 }
248- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reverse_iterator rend () _NOEXCEPT {
249+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reverse_iterator rend () _NOEXCEPT {
249250 return reverse_iterator (begin ());
250251 }
251- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_reverse_iterator rend () const _NOEXCEPT {
252+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_reverse_iterator rend () const _NOEXCEPT {
252253 return const_reverse_iterator (begin ());
253254 }
254255
255- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_iterator cbegin () const _NOEXCEPT { return begin (); }
256- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_iterator cend () const _NOEXCEPT { return end (); }
257- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_reverse_iterator crbegin () const _NOEXCEPT {
256+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_iterator cbegin () const _NOEXCEPT {
257+ return begin ();
258+ }
259+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_iterator cend () const _NOEXCEPT {
260+ return end ();
261+ }
262+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_reverse_iterator
263+ crbegin () const _NOEXCEPT {
258264 return rbegin ();
259265 }
260- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_reverse_iterator crend () const _NOEXCEPT { return rend (); }
266+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_reverse_iterator crend () const _NOEXCEPT {
267+ return rend ();
268+ }
261269
262270 // capacity:
263- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR size_type size () const _NOEXCEPT { return _Size; }
264- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR size_type max_size () const _NOEXCEPT { return _Size; }
271+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR size_type size () const _NOEXCEPT { return _Size; }
272+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR size_type max_size () const _NOEXCEPT { return _Size; }
265273 [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR bool empty () const _NOEXCEPT { return _Size == 0 ; }
266274
267275 // element access:
268- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reference operator [](size_type __n) _NOEXCEPT {
276+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reference operator [](size_type __n) _NOEXCEPT {
269277 _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS (__n < _Size, " out-of-bounds access in std::array<T, N>" );
270278 return __elems_[__n];
271279 }
272- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const_reference operator [](size_type __n) const _NOEXCEPT {
280+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const_reference
281+ operator [](size_type __n) const _NOEXCEPT {
273282 _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS (__n < _Size, " out-of-bounds access in std::array<T, N>" );
274283 return __elems_[__n];
275284 }
276285
277- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reference at (size_type __n) {
286+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reference at (size_type __n) {
278287 if (__n >= _Size)
279288 std::__throw_out_of_range (" array::at" );
280289 return __elems_[__n];
281290 }
282291
283- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const_reference at (size_type __n) const {
292+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const_reference at (size_type __n) const {
284293 if (__n >= _Size)
285294 std::__throw_out_of_range (" array::at" );
286295 return __elems_[__n];
287296 }
288297
289- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reference front () _NOEXCEPT { return (*this )[0 ]; }
290- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const_reference front () const _NOEXCEPT { return (*this )[0 ]; }
291- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reference back () _NOEXCEPT { return (*this )[_Size - 1 ]; }
292- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const_reference back () const _NOEXCEPT {
298+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reference front () _NOEXCEPT {
299+ return (*this )[0 ];
300+ }
301+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const_reference front () const _NOEXCEPT {
302+ return (*this )[0 ];
303+ }
304+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reference back () _NOEXCEPT {
305+ return (*this )[_Size - 1 ];
306+ }
307+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const_reference back () const _NOEXCEPT {
293308 return (*this )[_Size - 1 ];
294309 }
295310
296- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 value_type* data () _NOEXCEPT { return __elems_; }
297- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const value_type* data () const _NOEXCEPT { return __elems_; }
311+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 value_type* data () _NOEXCEPT {
312+ return __elems_;
313+ }
314+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const value_type* data () const _NOEXCEPT {
315+ return __elems_;
316+ }
298317};
299318
300319template <class _Tp >
@@ -328,8 +347,10 @@ struct array<_Tp, 0> {
328347 };
329348 _ALIGNAS_TYPE (_ArrayInStructT) _EmptyType __elems_[sizeof (_ArrayInStructT)];
330349
331- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 value_type* data () _NOEXCEPT { return nullptr ; }
332- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const value_type* data () const _NOEXCEPT { return nullptr ; }
350+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 value_type* data () _NOEXCEPT { return nullptr ; }
351+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const value_type* data () const _NOEXCEPT {
352+ return nullptr ;
353+ }
333354
334355 // No explicit construct/copy/destroy for aggregate type
335356 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void fill (const value_type&) {
@@ -341,97 +362,106 @@ struct array<_Tp, 0> {
341362 }
342363
343364 // iterators:
344- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 iterator begin () _NOEXCEPT {
365+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 iterator begin () _NOEXCEPT {
345366# if defined(_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STD_ARRAY)
346367 return std::__make_static_bounded_iter<0 >(data (), data ());
347368# else
348369 return iterator (data ());
349370# endif
350371 }
351- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_iterator begin () const _NOEXCEPT {
372+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_iterator begin () const _NOEXCEPT {
352373# if defined(_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STD_ARRAY)
353374 return std::__make_static_bounded_iter<0 >(data (), data ());
354375# else
355376 return const_iterator (data ());
356377# endif
357378 }
358- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 iterator end () _NOEXCEPT {
379+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 iterator end () _NOEXCEPT {
359380# if defined(_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STD_ARRAY)
360381 return std::__make_static_bounded_iter<0 >(data (), data ());
361382# else
362383 return iterator (data ());
363384# endif
364385 }
365- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_iterator end () const _NOEXCEPT {
386+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_iterator end () const _NOEXCEPT {
366387# if defined(_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STD_ARRAY)
367388 return std::__make_static_bounded_iter<0 >(data (), data ());
368389# else
369390 return const_iterator (data ());
370391# endif
371392 }
372393
373- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reverse_iterator rbegin () _NOEXCEPT {
394+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reverse_iterator rbegin () _NOEXCEPT {
374395 return reverse_iterator (end ());
375396 }
376- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_reverse_iterator rbegin () const _NOEXCEPT {
397+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_reverse_iterator
398+ rbegin () const _NOEXCEPT {
377399 return const_reverse_iterator (end ());
378400 }
379- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reverse_iterator rend () _NOEXCEPT {
401+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reverse_iterator rend () _NOEXCEPT {
380402 return reverse_iterator (begin ());
381403 }
382- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_reverse_iterator rend () const _NOEXCEPT {
404+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_reverse_iterator rend () const _NOEXCEPT {
383405 return const_reverse_iterator (begin ());
384406 }
385407
386- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_iterator cbegin () const _NOEXCEPT { return begin (); }
387- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_iterator cend () const _NOEXCEPT { return end (); }
388- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_reverse_iterator crbegin () const _NOEXCEPT {
408+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_iterator cbegin () const _NOEXCEPT {
409+ return begin ();
410+ }
411+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_iterator cend () const _NOEXCEPT {
412+ return end ();
413+ }
414+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_reverse_iterator
415+ crbegin () const _NOEXCEPT {
389416 return rbegin ();
390417 }
391- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_reverse_iterator crend () const _NOEXCEPT { return rend (); }
418+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_reverse_iterator crend () const _NOEXCEPT {
419+ return rend ();
420+ }
392421
393422 // capacity:
394- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR size_type size () const _NOEXCEPT { return 0 ; }
395- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR size_type max_size () const _NOEXCEPT { return 0 ; }
423+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR size_type size () const _NOEXCEPT { return 0 ; }
424+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR size_type max_size () const _NOEXCEPT { return 0 ; }
396425 [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR bool empty () const _NOEXCEPT { return true ; }
397426
398427 // element access:
399- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reference operator [](size_type) _NOEXCEPT {
428+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reference operator [](size_type) _NOEXCEPT {
400429 _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS (false , " cannot call array<T, 0>::operator[] on a zero-sized array" );
401430 __libcpp_unreachable ();
402431 }
403432
404- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const_reference operator [](size_type) const _NOEXCEPT {
433+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const_reference
434+ operator [](size_type) const _NOEXCEPT {
405435 _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS (false , " cannot call array<T, 0>::operator[] on a zero-sized array" );
406436 __libcpp_unreachable ();
407437 }
408438
409- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reference at (size_type) {
439+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reference at (size_type) {
410440 std::__throw_out_of_range (" array<T, 0>::at" );
411441 __libcpp_unreachable ();
412442 }
413443
414- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const_reference at (size_type) const {
444+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const_reference at (size_type) const {
415445 std::__throw_out_of_range (" array<T, 0>::at" );
416446 __libcpp_unreachable ();
417447 }
418448
419- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reference front () _NOEXCEPT {
449+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reference front () _NOEXCEPT {
420450 _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS (false , " cannot call array<T, 0>::front() on a zero-sized array" );
421451 __libcpp_unreachable ();
422452 }
423453
424- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const_reference front () const _NOEXCEPT {
454+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const_reference front () const _NOEXCEPT {
425455 _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS (false , " cannot call array<T, 0>::front() on a zero-sized array" );
426456 __libcpp_unreachable ();
427457 }
428458
429- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reference back () _NOEXCEPT {
459+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reference back () _NOEXCEPT {
430460 _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS (false , " cannot call array<T, 0>::back() on a zero-sized array" );
431461 __libcpp_unreachable ();
432462 }
433463
434- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const_reference back () const _NOEXCEPT {
464+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const_reference back () const _NOEXCEPT {
435465 _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS (false , " cannot call array<T, 0>::back() on a zero-sized array" );
436466 __libcpp_unreachable ();
437467 }
@@ -443,8 +473,8 @@ array(_Tp, _Args...) -> array<_Tp, 1 + sizeof...(_Args)>;
443473# endif
444474
445475template <class _Tp , size_t _Size>
446- inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool
447- operator ==(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y) {
476+ inline _LIBCPP_HIDE_FROM_ABI
477+ _LIBCPP_CONSTEXPR_SINCE_CXX20 bool operator ==(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y) {
448478 return std::equal (__x.begin (), __x.end (), __y.begin ());
449479}
450480
@@ -501,25 +531,28 @@ struct tuple_element<_Ip, array<_Tp, _Size> > {
501531};
502532
503533template <size_t _Ip, class _Tp , size_t _Size>
504- inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _Tp& get (array<_Tp, _Size>& __a) _NOEXCEPT {
534+ [[__nodiscard__]] inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _Tp&
535+ get (array<_Tp, _Size>& __a) _NOEXCEPT {
505536 static_assert (_Ip < _Size, " Index out of bounds in std::get<> (std::array)" );
506537 return __a.__elems_ [_Ip];
507538}
508539
509540template <size_t _Ip, class _Tp , size_t _Size>
510- inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const _Tp& get (const array<_Tp, _Size>& __a) _NOEXCEPT {
541+ [[__nodiscard__]] inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const _Tp&
542+ get (const array<_Tp, _Size>& __a) _NOEXCEPT {
511543 static_assert (_Ip < _Size, " Index out of bounds in std::get<> (const std::array)" );
512544 return __a.__elems_ [_Ip];
513545}
514546
515547template <size_t _Ip, class _Tp , size_t _Size>
516- inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _Tp&& get(array<_Tp, _Size>&& __a) _NOEXCEPT {
548+ [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _Tp&& get(array<_Tp, _Size>&& __a) _NOEXCEPT {
517549 static_assert (_Ip < _Size, " Index out of bounds in std::get<> (std::array &&)" );
518550 return std::move (__a.__elems_ [_Ip]);
519551}
520552
521553template <size_t _Ip, class _Tp , size_t _Size>
522- inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const _Tp&& get(const array<_Tp, _Size>&& __a) _NOEXCEPT {
554+ [[__nodiscard__]] inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const _Tp&&
555+ get (const array<_Tp, _Size>&& __a) _NOEXCEPT {
523556 static_assert (_Ip < _Size, " Index out of bounds in std::get<> (const std::array &&)" );
524557 return std::move (__a.__elems_ [_Ip]);
525558}
@@ -539,15 +572,15 @@ __to_array_rvalue_impl(_Tp (&&__arr)[_Size], index_sequence<_Index...>) {
539572}
540573
541574template <typename _Tp, size_t _Size>
542- _LIBCPP_HIDE_FROM_ABI constexpr array<remove_cv_t <_Tp>, _Size>
575+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr array<remove_cv_t <_Tp>, _Size>
543576to_array (_Tp (&__arr)[_Size]) noexcept (is_nothrow_constructible_v<_Tp, _Tp&>) {
544577 static_assert (!is_array_v<_Tp>, " [array.creation]/1: to_array does not accept multidimensional arrays." );
545578 static_assert (is_constructible_v<_Tp, _Tp&>, " [array.creation]/1: to_array requires copy constructible elements." );
546579 return std::__to_array_lvalue_impl (__arr, make_index_sequence<_Size>());
547580}
548581
549582template <typename _Tp, size_t _Size>
550- _LIBCPP_HIDE_FROM_ABI constexpr array<remove_cv_t <_Tp>, _Size>
583+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr array<remove_cv_t <_Tp>, _Size>
551584to_array (_Tp (&&__arr)[_Size]) noexcept (is_nothrow_move_constructible_v<_Tp>) {
552585 static_assert (!is_array_v<_Tp>, " [array.creation]/4: to_array does not accept multidimensional arrays." );
553586 static_assert (is_move_constructible_v<_Tp>, " [array.creation]/4: to_array requires move constructible elements." );
0 commit comments