kokkos / stdBLAS

Reference Implementation for stdBLAS
Other
118 stars 22 forks source link

Add RandomAccessIteror member functions for MdspanRandomAccessIterator #271

Open masterleinad opened 3 months ago

masterleinad commented 3 months ago

I need the first commit adding some RandomAccessIteror member functions for MdspanRandomAccessIterator to compile the tests. The second commit fixes an apparent oversight in not trying to check the result of a comparison in the transposed test file.

dalg24 commented 3 months ago

Why was that not caught by the CI?

masterleinad commented 3 months ago

The errors look like

[...]
[ 55%] Building CXX object tests/native/CMakeFiles/iterator.dir/iterator.cpp.o
cd /tmp/stdBLAS/build/tests/native && /opt/homebrew/bin/mpicxx  -I/tmp/stdBLAS/build/include/experimental -I/tmp/stdBLAS/include -I/tmp/stdBLAS/build/_deps/mdspan-src/include -F/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.5.sdk/System/Library/Frameworks -isystem /tmp/stdBLAS/build/_deps/googletest-src/googletest/include -isystem /tmp/stdBLAS/build/_deps/googletest-src/googletest -std=gnu++23 -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.5.sdk -MD -MT tests/native/CMakeFiles/iterator.dir/iterator.cpp.o -MF CMakeFiles/iterator.dir/iterator.cpp.o.d -o CMakeFiles/iterator.dir/iterator.cpp.o -c /tmp/stdBLAS/tests/native/iterator.cpp
/tmp/stdBLAS/tests/native/iterator.cpp:17:17: warning: 'iterator<std::random_access_iterator_tag, double, unsigned long>' is deprecated [-Wdeprecated-declarations]
   17 |     public std::iterator<
      |                 ^
/tmp/stdBLAS/tests/native/iterator.cpp:288:22: note: in instantiation of template class '(anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>' requested here
  288 |       auto the_beg = begin(A_col0);
      |                      ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__iterator/iterator.h:23:29: note: 'iterator<std::random_access_iterator_tag, double, unsigned long>' has been explicitly marked deprecated here
   23 | struct _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX17 iterator {
      |                             ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__config:1001:41: note: expanded from macro '_LIBCPP_DEPRECATED_IN_CXX17'
 1001 | #    define _LIBCPP_DEPRECATED_IN_CXX17 _LIBCPP_DEPRECATED
      |                                         ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__config:974:49: note: expanded from macro '_LIBCPP_DEPRECATED'
  974 | #      define _LIBCPP_DEPRECATED __attribute__((__deprecated__))
      |                                                 ^
In file included from /tmp/stdBLAS/tests/native/iterator.cpp:1:
In file included from /tmp/stdBLAS/tests/native/./gtest_fixtures.hpp:46:
In file included from /tmp/stdBLAS/build/_deps/googletest-src/googletest/include/gtest/gtest.h:57:
In file included from /opt/homebrew/opt/llvm/bin/../include/c++/v1/memory:937:
In file included from /opt/homebrew/opt/llvm/bin/../include/c++/v1/__memory/ranges_uninitialized_algorithms.h:22:
In file included from /opt/homebrew/opt/llvm/bin/../include/c++/v1/__memory/uninitialized_algorithms.h:13:
In file included from /opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/copy.h:12:
In file included from /opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/copy_move_common.h:12:
In file included from /opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/iterator_operations.h:15:
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__iterator/advance.h:58:7: error: no viable overloaded '+='
   58 |   __i += __n;
      |   ~~~ ^  ~~~
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__iterator/advance.h:71:8: note: in instantiation of function template specialization 'std::__advance<(anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>>' requested here
   71 |   std::__advance(__i, __n, typename iterator_traits<_InputIter>::iterator_category());
      |        ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__iterator/next.h:35:8: note: in instantiation of function template specialization 'std::advance<(anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>, long, long, void>' requested here
   35 |   std::advance(__x, __n);
      |        ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/iterator_operations.h:149:17: note: in instantiation of function template specialization 'std::next<(anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>, 0>' requested here
  149 |     return std::next(std::forward<_Iter>(__it), __n);
      |                 ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/rotate.h:162:31: note: in instantiation of function template specialization 'std::_IterOps<std::_ClassicAlgPolicy>::next<(anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>> &>' requested here
  162 |     if (_IterOps<_AlgPolicy>::next(__first) == __middle)
      |                               ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/rotate.h:183:24: note: in instantiation of function template specialization 'std::__rotate_impl<std::_ClassicAlgPolicy, (anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>>' requested here
  183 |   auto __result = std::__rotate_impl<_AlgPolicy>(std::move(__first), std::move(__middle), __last_iter, _IterCategory());
      |                        ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/rotate.h:191:15: note: in instantiation of function template specialization 'std::__rotate<std::_ClassicAlgPolicy, (anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>, (anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>>' requested here
  191 |   return std::__rotate<_ClassicAlgPolicy>(std::move(__first), std::move(__middle), std::move(__last)).first;
      |               ^
/tmp/stdBLAS/tests/native/iterator.cpp:239:10: note: in instantiation of function template specialization 'std::rotate<(anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>>' requested here
  239 |     std::rotate(begin(x), begin(x) + 1, end(x));
      |          ^
/tmp/stdBLAS/tests/native/iterator.cpp:334:25: note: in instantiation of function template specialization '(anonymous namespace)::testRotateSort<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>' requested here
  334 |     const bool ok_col = testRotateSort(A_col0);
      |                         ^
In file included from /tmp/stdBLAS/tests/native/iterator.cpp:1:
In file included from /tmp/stdBLAS/tests/native/./gtest_fixtures.hpp:46:
In file included from /tmp/stdBLAS/build/_deps/googletest-src/googletest/include/gtest/gtest.h:58:
In file included from /opt/homebrew/opt/llvm/bin/../include/c++/v1/ostream:189:
In file included from /opt/homebrew/opt/llvm/bin/../include/c++/v1/format:195:
In file included from /opt/homebrew/opt/llvm/bin/../include/c++/v1/__format/container_adaptor.h:24:
In file included from /opt/homebrew/opt/llvm/bin/../include/c++/v1/queue:273:
In file included from /opt/homebrew/opt/llvm/bin/../include/c++/v1/vector:316:
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/rotate.h:118:14: error: no viable overloaded '+='
  118 |         __p2 += __m1;
      |         ~~~~ ^  ~~~~
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/rotate.h:166:17: note: in instantiation of function template specialization 'std::__rotate_gcd<std::_ClassicAlgPolicy, (anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>>' requested here
  166 |     return std::__rotate_gcd<_AlgPolicy>(__first, __middle, __last);
      |                 ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/rotate.h:183:24: note: in instantiation of function template specialization 'std::__rotate_impl<std::_ClassicAlgPolicy, (anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>>' requested here
  183 |   auto __result = std::__rotate_impl<_AlgPolicy>(std::move(__first), std::move(__middle), __last_iter, _IterCategory());
      |                        ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/rotate.h:191:15: note: in instantiation of function template specialization 'std::__rotate<std::_ClassicAlgPolicy, (anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>, (anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>>' requested here
  191 |   return std::__rotate<_ClassicAlgPolicy>(std::move(__first), std::move(__middle), std::move(__last)).first;
      |               ^
/tmp/stdBLAS/tests/native/iterator.cpp:239:10: note: in instantiation of function template specialization 'std::rotate<(anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>>' requested here
  239 |     std::rotate(begin(x), begin(x) + 1, end(x));
      |          ^
/tmp/stdBLAS/tests/native/iterator.cpp:334:25: note: in instantiation of function template specialization '(anonymous namespace)::testRotateSort<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>' requested here
  334 |     const bool ok_col = testRotateSort(A_col0);
      |                         ^
In file included from /tmp/stdBLAS/tests/native/iterator.cpp:1:
In file included from /tmp/stdBLAS/tests/native/./gtest_fixtures.hpp:46:
In file included from /tmp/stdBLAS/build/_deps/googletest-src/googletest/include/gtest/gtest.h:58:
In file included from /opt/homebrew/opt/llvm/bin/../include/c++/v1/ostream:189:
In file included from /opt/homebrew/opt/llvm/bin/../include/c++/v1/format:195:
In file included from /opt/homebrew/opt/llvm/bin/../include/c++/v1/__format/container_adaptor.h:24:
In file included from /opt/homebrew/opt/llvm/bin/../include/c++/v1/queue:257:
In file included from /opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/make_heap.h:15:
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/sift_down.h:95:15: error: no viable overloaded '+='
   95 |     __child_i += difference_type(__child + 1);
      |     ~~~~~~~~~ ^  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/pop_heap.h:47:41: note: in instantiation of function template specialization 'std::__floyd_sift_down<std::_ClassicAlgPolicy, std::__less<void, void> &, (anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>>' requested here
   47 |     _RandomAccessIterator __hole = std::__floyd_sift_down<_AlgPolicy>(__first, __comp_ref, __len);
      |                                         ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/sort_heap.h:40:10: note: in instantiation of function template specialization 'std::__pop_heap<std::_ClassicAlgPolicy, std::__less<void, void>, (anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>>' requested here
   40 |     std::__pop_heap<_AlgPolicy>(__first, __last, __comp_ref, __n);
      |          ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/partial_sort.h:51:8: note: in instantiation of function template specialization 'std::__sort_heap<std::_ClassicAlgPolicy, std::__less<void, void> &, (anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>>' requested here
   51 |   std::__sort_heap<_AlgPolicy>(std::move(__first), std::move(__middle), __comp);
      |        ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/partial_sort.h:65:12: note: in instantiation of function template specialization 'std::__partial_sort_impl<std::_ClassicAlgPolicy, std::__less<void, void> &, (anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>, (anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>>' requested here
   65 |       std::__partial_sort_impl<_AlgPolicy>(__first, __middle, __last, static_cast<__comp_ref_type<_Compare> >(__comp));
      |            ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/sort.h:993:10: note: in instantiation of function template specialization 'std::__partial_sort<std::_ClassicAlgPolicy, std::__less<void, void>, (anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>, (anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>>' requested here
  993 |     std::__partial_sort<_AlgPolicy>(
      |          ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/sort.h:1004:8: note: in instantiation of function template specialization 'std::__sort_impl<std::_ClassicAlgPolicy, (anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>, std::__less<void, void>>' requested here
 1004 |   std::__sort_impl<_ClassicAlgPolicy>(std::move(__first), std::move(__last), __comp);
      |        ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/sort.h:1010:8: note: in instantiation of function template specialization 'std::sort<(anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>, std::__less<void, void>>' requested here
 1010 |   std::sort(__first, __last, __less<>());
      |        ^
/tmp/stdBLAS/tests/native/iterator.cpp:240:10: note: in instantiation of function template specialization 'std::sort<(anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>>' requested here
  240 |     std::sort(begin(x), end(x));
      |          ^
/tmp/stdBLAS/tests/native/iterator.cpp:334:25: note: in instantiation of function template specialization '(anonymous namespace)::testRotateSort<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>' requested here
  334 |     const bool ok_col = testRotateSort(A_col0);
      |                         ^
In file included from /tmp/stdBLAS/tests/native/iterator.cpp:2:
In file included from /opt/homebrew/opt/llvm/bin/../include/c++/v1/algorithm:1847:
In file included from /opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/nth_element.h:15:
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/sort.h:573:40: error: invalid operands to binary expression ('(anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>' and '(anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>')
  573 |   bool __already_partitioned = __first >= __last;
      |                                ~~~~~~~ ^  ~~~~~~
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/sort.h:844:42: note: in instantiation of function template specialization 'std::__bitset_partition<std::_ClassicAlgPolicy, (anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>, std::__less<void, void> &>' requested here
  844 |                                   ? std::__bitset_partition<_AlgPolicy, _RandomAccessIterator, _Compare>(__first, __last, __comp)
      |                                          ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/sort.h:929:8: note: in instantiation of function template specialization 'std::__introsort<std::_ClassicAlgPolicy, std::__less<void, void> &, (anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>, false>' requested here
  929 |   std::__introsort<_AlgPolicy,
      |        ^
/tmp/stdBLAS/tests/native/iterator.cpp:334:25: note: in instantiation of function template specialization '(anonymous namespace)::testRotateSort<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>' requested here
  334 |     const bool ok_col = testRotateSort(A_col0);
      |                         ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__system_error/error_condition.h:113:1: note: candidate function not viable: no known conversion from '(anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>' to 'const error_condition' for 1st argument
  113 | operator<=>(const error_condition& __x, const error_condition& __y) noexcept {
      | ^           ~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__system_error/error_code.h:126:46: note: candidate function not viable: no known conversion from '(anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>' to 'const error_code' for 1st argument
  126 | inline _LIBCPP_HIDE_FROM_ABI strong_ordering operator<=>(const error_code& __x, const error_code& __y) noexcept {
      |                                              ^           ~~~~~~~~~~~~~~~~~~~~~
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__variant/monostate.h:32:56: note: candidate function not viable: no known conversion from '(anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>' to 'monostate' for 1st argument
   32 | _LIBCPP_HIDE_FROM_ABI inline constexpr strong_ordering operator<=>(monostate, monostate) noexcept {
      |                                                        ^           ~~~~~~~~~
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__utility/pair.h:524:1: note: candidate template ignored: could not match 'pair' against 'MdspanRandomAccessIterator'
  524 | operator<=>(const pair<_T1, _T2>& __x, const pair<_U1, _U2>& __y) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__utility/pair.h:524:1: note: candidate template ignored: could not match 'pair' against 'MdspanRandomAccessIterator'
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__iterator/reverse_iterator.h:255:1: note: candidate template ignored: could not match 'reverse_iterator' against 'MdspanRandomAccessIterator'
  255 | operator>=(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y)
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__iterator/reverse_iterator.h:280:1: note: candidate template ignored: could not match 'reverse_iterator' against 'MdspanRandomAccessIterator'
  280 | operator<=>(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__iterator/reverse_iterator.h:280:1: note: candidate template ignored: could not match 'reverse_iterator' against 'MdspanRandomAccessIterator'
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__memory/unique_ptr.h:489:35: note: candidate template ignored: could not match 'unique_ptr' against 'MdspanRandomAccessIterator'
  489 | inline _LIBCPP_HIDE_FROM_ABI bool operator>=(const unique_ptr<_T1, _D1>& __x, const unique_ptr<_T2, _D2>& __y) {
      |                                   ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__memory/unique_ptr.h:498:5: note: candidate template ignored: could not match 'unique_ptr' against 'MdspanRandomAccessIterator'
  498 |     operator<=>(const unique_ptr<_T1, _D1>& __x, const unique_ptr<_T2, _D2>& __y) {
      |     ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__memory/unique_ptr.h:498:5: note: candidate template ignored: could not match 'unique_ptr' against 'MdspanRandomAccessIterator'
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__memory/unique_ptr.h:559:65: note: candidate template ignored: could not match 'unique_ptr' against 'MdspanRandomAccessIterator'
  559 | inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX23 bool operator>=(const unique_ptr<_T1, _D1>& __x, nullptr_t) {
      |                                                                 ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__memory/unique_ptr.h:564:65: note: candidate template ignored: could not match 'unique_ptr' against 'MdspanRandomAccessIterator'
  564 | inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX23 bool operator>=(nullptr_t, const unique_ptr<_T1, _D1>& __x) {
      |                                                                 ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__memory/unique_ptr.h:572:1: note: candidate template ignored: could not match 'unique_ptr' against 'MdspanRandomAccessIterator'
  572 | operator<=>(const unique_ptr<_T1, _D1>& __x, nullptr_t) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__memory/unique_ptr.h:572:1: note: candidate template ignored: could not match 'unique_ptr' against 'MdspanRandomAccessIterator'
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__memory/shared_ptr.h:1143:39: note: candidate template ignored: could not match 'shared_ptr' against 'MdspanRandomAccessIterator'
 1143 | _LIBCPP_HIDE_FROM_ABI strong_ordering operator<=>(shared_ptr<_Tp> const& __x, shared_ptr<_Up> const& __y) noexcept {
      |                                       ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__memory/shared_ptr.h:1143:39: note: candidate template ignored: could not match 'shared_ptr' against 'MdspanRandomAccessIterator'
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__memory/shared_ptr.h:1214:39: note: candidate template ignored: could not match 'shared_ptr' against 'MdspanRandomAccessIterator'
 1214 | _LIBCPP_HIDE_FROM_ABI strong_ordering operator<=>(shared_ptr<_Tp> const& __x, nullptr_t) noexcept {
      |                                       ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__memory/shared_ptr.h:1214:39: note: candidate template ignored: could not match 'shared_ptr' against 'MdspanRandomAccessIterator'
/opt/homebrew/opt/llvm/bin/../include/c++/v1/tuple:1227:1: note: candidate template ignored: could not match 'tuple' against 'MdspanRandomAccessIterator'
 1227 | operator<=>(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/tuple:1227:1: note: candidate template ignored: could not match 'tuple' against 'MdspanRandomAccessIterator'
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__iterator/wrap_iter.h:156:1: note: candidate template ignored: could not match '__wrap_iter' against 'MdspanRandomAccessIterator'
  156 | operator>=(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter1>& __y) _NOEXCEPT {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__iterator/wrap_iter.h:162:1: note: candidate template ignored: could not match '__wrap_iter' against 'MdspanRandomAccessIterator'
  162 | operator>=(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter2>& __y) _NOEXCEPT {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/string_view:712:38: note: candidate template ignored: could not match 'basic_string_view' against 'MdspanRandomAccessIterator'
  712 | _LIBCPP_HIDE_FROM_ABI constexpr auto operator<=>(basic_string_view<_CharT, _Traits> __lhs,
      |                                      ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/string_view:712:38: note: candidate template ignored: could not match 'basic_string_view' against 'MdspanRandomAccessIterator'
/opt/homebrew/opt/llvm/bin/../include/c++/v1/string:3749:38: note: candidate template ignored: could not match 'basic_string' against 'MdspanRandomAccessIterator'
 3749 | _LIBCPP_HIDE_FROM_ABI constexpr auto operator<=>(const basic_string<_CharT, _Traits, _Allocator>& __lhs,
      |                                      ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/string:3756:1: note: candidate template ignored: could not match 'basic_string' against 'MdspanRandomAccessIterator'
 3756 | operator<=>(const basic_string<_CharT, _Traits, _Allocator>& __lhs, const _CharT* __rhs) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/string:3756:1: note: candidate template ignored: could not match 'basic_string' against 'MdspanRandomAccessIterator'
/opt/homebrew/opt/llvm/bin/../include/c++/v1/optional:1048:1: note: candidate template ignored: could not match 'optional' against 'MdspanRandomAccessIterator'
 1048 | operator>=(const optional<_Tp>& __x, const optional<_Up>& __y) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/optional:1060:1: note: candidate template ignored: could not match 'optional' against 'MdspanRandomAccessIterator'
 1060 | operator<=>(const optional<_Tp>& __x, const optional<_Up>& __y) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/optional:1060:1: note: candidate template ignored: could not match 'optional' against 'MdspanRandomAccessIterator'
/opt/homebrew/opt/llvm/bin/../include/c++/v1/optional:1134:49: note: candidate template ignored: could not match 'optional' against 'MdspanRandomAccessIterator'
 1134 | _LIBCPP_HIDE_FROM_ABI constexpr strong_ordering operator<=>(const optional<_Tp>& __x, nullopt_t) noexcept {
      |                                                 ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/optional:1134:49: note: candidate template ignored: could not match 'optional' against 'MdspanRandomAccessIterator'
/opt/homebrew/opt/llvm/bin/../include/c++/v1/optional:1225:1: note: candidate template ignored: could not match 'optional' against 'MdspanRandomAccessIterator'
 1225 | operator>=(const optional<_Tp>& __x, const _Up& __v) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/optional:1233:1: note: candidate template ignored: could not match 'optional' against 'MdspanRandomAccessIterator'
 1233 | operator>=(const _Tp& __v, const optional<_Up>& __x) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/optional:1242:1: note: candidate template ignored: could not match 'optional' against 'MdspanRandomAccessIterator'
 1242 | operator<=>(const optional<_Tp>& __x, const _Up& __v) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/optional:1242:1: note: candidate template ignored: could not match 'optional' against 'MdspanRandomAccessIterator'
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__iterator/move_iterator.h:288:1: note: candidate template ignored: could not match 'move_iterator' against 'MdspanRandomAccessIterator'
  288 | operator>=(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__iterator/move_iterator.h:295:1: note: candidate template ignored: could not match 'move_iterator' against 'MdspanRandomAccessIterator'
  295 | operator<=>(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y)
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__iterator/move_iterator.h:295:1: note: candidate template ignored: could not match 'move_iterator' against 'MdspanRandomAccessIterator'
/opt/homebrew/opt/llvm/bin/../include/c++/v1/deque:2545:1: note: candidate template ignored: could not match 'deque' against 'MdspanRandomAccessIterator'
 2545 | operator<=>(const deque<_Tp, _Allocator>& __x, const deque<_Tp, _Allocator>& __y) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/array:419:1: note: candidate template ignored: could not match 'array' against 'MdspanRandomAccessIterator'
  419 | operator<=>(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/vector:2897:1: note: candidate template ignored: could not match 'vector' against 'MdspanRandomAccessIterator'
 2897 | operator<=>(const vector<_Tp, _Allocator>& __x, const vector<_Tp, _Allocator>& __y) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/queue:489:35: note: candidate template ignored: could not match 'queue' against 'MdspanRandomAccessIterator'
  489 | inline _LIBCPP_HIDE_FROM_ABI bool operator>=(const queue<_Tp, _Container>& __x, const queue<_Tp, _Container>& __y) {
      |                                   ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/queue:502:1: note: candidate template ignored: could not match 'queue' against 'MdspanRandomAccessIterator'
  502 | operator<=>(const queue<_Tp, _Container>& __x, const queue<_Tp, _Container>& __y) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/stack:340:35: note: candidate template ignored: could not match 'stack' against 'MdspanRandomAccessIterator'
  340 | inline _LIBCPP_HIDE_FROM_ABI bool operator>=(const stack<_Tp, _Container>& __x, const stack<_Tp, _Container>& __y) {
      |                                   ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/stack:353:1: note: candidate template ignored: could not match 'stack' against 'MdspanRandomAccessIterator'
  353 | operator<=>(const stack<_Tp, _Container>& __x, const stack<_Tp, _Container>& __y) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/variant:1465:1: note: candidate template ignored: could not match 'variant' against 'MdspanRandomAccessIterator'
 1465 | operator<=>(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/variant:1535:38: note: candidate template ignored: could not match 'variant' against 'MdspanRandomAccessIterator'
 1535 | _LIBCPP_HIDE_FROM_ABI constexpr bool operator>=(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs) {
      |                                      ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/map:1625:1: note: candidate template ignored: could not match 'map' against 'MdspanRandomAccessIterator'
 1625 | operator<=>(const map<_Key, _Tp, _Compare, _Allocator>& __x, const map<_Key, _Tp, _Compare, _Allocator>& __y) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/map:2145:1: note: candidate template ignored: could not match 'multimap' against 'MdspanRandomAccessIterator'
 2145 | operator<=>(const multimap<_Key, _Tp, _Compare, _Allocator>& __x,
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/set:998:1: note: candidate template ignored: could not match 'set' against 'MdspanRandomAccessIterator'
  998 | operator<=>(const set<_Key, _Allocator>& __x, const set<_Key, _Allocator>& __y) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/set:1458:1: note: candidate template ignored: could not match 'multiset' against 'MdspanRandomAccessIterator'
 1458 | operator<=>(const multiset<_Key, _Allocator>& __x, const multiset<_Key, _Allocator>& __y) {
      | ^
In file included from /tmp/stdBLAS/tests/native/iterator.cpp:2:
In file included from /opt/homebrew/opt/llvm/bin/../include/c++/v1/algorithm:1847:
In file included from /opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/nth_element.h:15:
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/sort.h:600:13: error: no viable overloaded '+='
  600 |     __first += (__left_bitset == 0) ? difference_type(__detail::__block_size) : difference_type(0);
      |     ~~~~~~~ ^  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/sort.h:601:11: error: no viable overloaded '-='
  601 |     __lm1 -= (__right_bitset == 0) ? difference_type(__detail::__block_size) : difference_type(0);
      |     ~~~~~ ^  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/sort.h:488:11: error: no viable overloaded '+='
  488 |   __first += (__left_bitset == 0) ? __l_size : 0;
      |   ~~~~~~~ ^  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/sort.h:605:8: note: in instantiation of function template specialization 'std::__bitset_partition_partial_blocks<std::_ClassicAlgPolicy, std::__less<void, void> &, (anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>, double>' requested here
  605 |   std::__bitset_partition_partial_blocks<_AlgPolicy, _Compare>(
      |        ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/sort.h:844:42: note: in instantiation of function template specialization 'std::__bitset_partition<std::_ClassicAlgPolicy, (anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>, std::__less<void, void> &>' requested here
  844 |                                   ? std::__bitset_partition<_AlgPolicy, _RandomAccessIterator, _Compare>(__first, __last, __comp)
      |                                          ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/sort.h:929:8: note: in instantiation of function template specialization 'std::__introsort<std::_ClassicAlgPolicy, std::__less<void, void> &, (anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>, false>' requested here
  929 |   std::__introsort<_AlgPolicy,
      |        ^
/tmp/stdBLAS/tests/native/iterator.cpp:334:25: note: in instantiation of function template specialization '(anonymous namespace)::testRotateSort<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>' requested here
  334 |     const bool ok_col = testRotateSort(A_col0);
      |                         ^
In file included from /tmp/stdBLAS/tests/native/iterator.cpp:2:
In file included from /opt/homebrew/opt/llvm/bin/../include/c++/v1/algorithm:1847:
In file included from /opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/nth_element.h:15:
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/sort.h:489:9: error: no viable overloaded '-='
  489 |   __lm1 -= (__right_bitset == 0) ? __r_size : 0;
      |   ~~~~~ ^  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/sort.h:663:40: error: invalid operands to binary expression ('(anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>' and '(anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>')
  663 |   bool __already_partitioned = __first >= __last;
      |                                ~~~~~~~ ^  ~~~~~~
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/sort.h:845:42: note: in instantiation of function template specialization 'std::__partition_with_equals_on_right<std::_ClassicAlgPolicy, (anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>, std::__less<void, void> &>' requested here
  845 |                                   : std::__partition_with_equals_on_right<_AlgPolicy, _RandomAccessIterator, _Compare>(
      |                                          ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__algorithm/sort.h:929:8: note: in instantiation of function template specialization 'std::__introsort<std::_ClassicAlgPolicy, std::__less<void, void> &, (anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>, false>' requested here
  929 |   std::__introsort<_AlgPolicy,
      |        ^
/tmp/stdBLAS/tests/native/iterator.cpp:334:25: note: in instantiation of function template specialization '(anonymous namespace)::testRotateSort<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>' requested here
  334 |     const bool ok_col = testRotateSort(A_col0);
      |                         ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__system_error/error_condition.h:113:1: note: candidate function not viable: no known conversion from '(anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>' to 'const error_condition' for 1st argument
  113 | operator<=>(const error_condition& __x, const error_condition& __y) noexcept {
      | ^           ~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__system_error/error_code.h:126:46: note: candidate function not viable: no known conversion from '(anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>' to 'const error_code' for 1st argument
  126 | inline _LIBCPP_HIDE_FROM_ABI strong_ordering operator<=>(const error_code& __x, const error_code& __y) noexcept {
      |                                              ^           ~~~~~~~~~~~~~~~~~~~~~
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__variant/monostate.h:32:56: note: candidate function not viable: no known conversion from '(anonymous namespace)::MdspanRandomAccessIterator<double, Kokkos::extents<unsigned long, 18446744073709551615>, Kokkos::layout_stride, Kokkos::default_accessor<double>>' to 'monostate' for 1st argument
   32 | _LIBCPP_HIDE_FROM_ABI inline constexpr strong_ordering operator<=>(monostate, monostate) noexcept {
      |                                                        ^           ~~~~~~~~~
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__utility/pair.h:524:1: note: candidate template ignored: could not match 'pair' against 'MdspanRandomAccessIterator'
  524 | operator<=>(const pair<_T1, _T2>& __x, const pair<_U1, _U2>& __y) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__utility/pair.h:524:1: note: candidate template ignored: could not match 'pair' against 'MdspanRandomAccessIterator'
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__iterator/reverse_iterator.h:255:1: note: candidate template ignored: could not match 'reverse_iterator' against 'MdspanRandomAccessIterator'
  255 | operator>=(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y)
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__iterator/reverse_iterator.h:280:1: note: candidate template ignored: could not match 'reverse_iterator' against 'MdspanRandomAccessIterator'
  280 | operator<=>(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__iterator/reverse_iterator.h:280:1: note: candidate template ignored: could not match 'reverse_iterator' against 'MdspanRandomAccessIterator'
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__memory/unique_ptr.h:489:35: note: candidate template ignored: could not match 'unique_ptr' against 'MdspanRandomAccessIterator'
  489 | inline _LIBCPP_HIDE_FROM_ABI bool operator>=(const unique_ptr<_T1, _D1>& __x, const unique_ptr<_T2, _D2>& __y) {
      |                                   ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__memory/unique_ptr.h:498:5: note: candidate template ignored: could not match 'unique_ptr' against 'MdspanRandomAccessIterator'
  498 |     operator<=>(const unique_ptr<_T1, _D1>& __x, const unique_ptr<_T2, _D2>& __y) {
      |     ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__memory/unique_ptr.h:498:5: note: candidate template ignored: could not match 'unique_ptr' against 'MdspanRandomAccessIterator'
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__memory/unique_ptr.h:559:65: note: candidate template ignored: could not match 'unique_ptr' against 'MdspanRandomAccessIterator'
  559 | inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX23 bool operator>=(const unique_ptr<_T1, _D1>& __x, nullptr_t) {
      |                                                                 ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__memory/unique_ptr.h:564:65: note: candidate template ignored: could not match 'unique_ptr' against 'MdspanRandomAccessIterator'
  564 | inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX23 bool operator>=(nullptr_t, const unique_ptr<_T1, _D1>& __x) {
      |                                                                 ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__memory/unique_ptr.h:572:1: note: candidate template ignored: could not match 'unique_ptr' against 'MdspanRandomAccessIterator'
  572 | operator<=>(const unique_ptr<_T1, _D1>& __x, nullptr_t) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__memory/unique_ptr.h:572:1: note: candidate template ignored: could not match 'unique_ptr' against 'MdspanRandomAccessIterator'
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__memory/shared_ptr.h:1143:39: note: candidate template ignored: could not match 'shared_ptr' against 'MdspanRandomAccessIterator'
 1143 | _LIBCPP_HIDE_FROM_ABI strong_ordering operator<=>(shared_ptr<_Tp> const& __x, shared_ptr<_Up> const& __y) noexcept {
      |                                       ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__memory/shared_ptr.h:1143:39: note: candidate template ignored: could not match 'shared_ptr' against 'MdspanRandomAccessIterator'
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__memory/shared_ptr.h:1214:39: note: candidate template ignored: could not match 'shared_ptr' against 'MdspanRandomAccessIterator'
 1214 | _LIBCPP_HIDE_FROM_ABI strong_ordering operator<=>(shared_ptr<_Tp> const& __x, nullptr_t) noexcept {
      |                                       ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__memory/shared_ptr.h:1214:39: note: candidate template ignored: could not match 'shared_ptr' against 'MdspanRandomAccessIterator'
/opt/homebrew/opt/llvm/bin/../include/c++/v1/tuple:1227:1: note: candidate template ignored: could not match 'tuple' against 'MdspanRandomAccessIterator'
 1227 | operator<=>(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/tuple:1227:1: note: candidate template ignored: could not match 'tuple' against 'MdspanRandomAccessIterator'
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__iterator/wrap_iter.h:156:1: note: candidate template ignored: could not match '__wrap_iter' against 'MdspanRandomAccessIterator'
  156 | operator>=(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter1>& __y) _NOEXCEPT {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__iterator/wrap_iter.h:162:1: note: candidate template ignored: could not match '__wrap_iter' against 'MdspanRandomAccessIterator'
  162 | operator>=(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter2>& __y) _NOEXCEPT {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/string_view:712:38: note: candidate template ignored: could not match 'basic_string_view' against 'MdspanRandomAccessIterator'
  712 | _LIBCPP_HIDE_FROM_ABI constexpr auto operator<=>(basic_string_view<_CharT, _Traits> __lhs,
      |                                      ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/string_view:712:38: note: candidate template ignored: could not match 'basic_string_view' against 'MdspanRandomAccessIterator'
/opt/homebrew/opt/llvm/bin/../include/c++/v1/string:3749:38: note: candidate template ignored: could not match 'basic_string' against 'MdspanRandomAccessIterator'
 3749 | _LIBCPP_HIDE_FROM_ABI constexpr auto operator<=>(const basic_string<_CharT, _Traits, _Allocator>& __lhs,
      |                                      ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/string:3756:1: note: candidate template ignored: could not match 'basic_string' against 'MdspanRandomAccessIterator'
 3756 | operator<=>(const basic_string<_CharT, _Traits, _Allocator>& __lhs, const _CharT* __rhs) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/string:3756:1: note: candidate template ignored: could not match 'basic_string' against 'MdspanRandomAccessIterator'
/opt/homebrew/opt/llvm/bin/../include/c++/v1/optional:1048:1: note: candidate template ignored: could not match 'optional' against 'MdspanRandomAccessIterator'
 1048 | operator>=(const optional<_Tp>& __x, const optional<_Up>& __y) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/optional:1060:1: note: candidate template ignored: could not match 'optional' against 'MdspanRandomAccessIterator'
 1060 | operator<=>(const optional<_Tp>& __x, const optional<_Up>& __y) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/optional:1060:1: note: candidate template ignored: could not match 'optional' against 'MdspanRandomAccessIterator'
/opt/homebrew/opt/llvm/bin/../include/c++/v1/optional:1134:49: note: candidate template ignored: could not match 'optional' against 'MdspanRandomAccessIterator'
 1134 | _LIBCPP_HIDE_FROM_ABI constexpr strong_ordering operator<=>(const optional<_Tp>& __x, nullopt_t) noexcept {
      |                                                 ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/optional:1134:49: note: candidate template ignored: could not match 'optional' against 'MdspanRandomAccessIterator'
/opt/homebrew/opt/llvm/bin/../include/c++/v1/optional:1225:1: note: candidate template ignored: could not match 'optional' against 'MdspanRandomAccessIterator'
 1225 | operator>=(const optional<_Tp>& __x, const _Up& __v) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/optional:1233:1: note: candidate template ignored: could not match 'optional' against 'MdspanRandomAccessIterator'
 1233 | operator>=(const _Tp& __v, const optional<_Up>& __x) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/optional:1242:1: note: candidate template ignored: could not match 'optional' against 'MdspanRandomAccessIterator'
 1242 | operator<=>(const optional<_Tp>& __x, const _Up& __v) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/optional:1242:1: note: candidate template ignored: could not match 'optional' against 'MdspanRandomAccessIterator'
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__iterator/move_iterator.h:288:1: note: candidate template ignored: could not match 'move_iterator' against 'MdspanRandomAccessIterator'
  288 | operator>=(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__iterator/move_iterator.h:295:1: note: candidate template ignored: could not match 'move_iterator' against 'MdspanRandomAccessIterator'
  295 | operator<=>(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y)
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/__iterator/move_iterator.h:295:1: note: candidate template ignored: could not match 'move_iterator' against 'MdspanRandomAccessIterator'
/opt/homebrew/opt/llvm/bin/../include/c++/v1/deque:2545:1: note: candidate template ignored: could not match 'deque' against 'MdspanRandomAccessIterator'
 2545 | operator<=>(const deque<_Tp, _Allocator>& __x, const deque<_Tp, _Allocator>& __y) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/array:419:1: note: candidate template ignored: could not match 'array' against 'MdspanRandomAccessIterator'
  419 | operator<=>(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/vector:2897:1: note: candidate template ignored: could not match 'vector' against 'MdspanRandomAccessIterator'
 2897 | operator<=>(const vector<_Tp, _Allocator>& __x, const vector<_Tp, _Allocator>& __y) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/queue:489:35: note: candidate template ignored: could not match 'queue' against 'MdspanRandomAccessIterator'
  489 | inline _LIBCPP_HIDE_FROM_ABI bool operator>=(const queue<_Tp, _Container>& __x, const queue<_Tp, _Container>& __y) {
      |                                   ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/queue:502:1: note: candidate template ignored: could not match 'queue' against 'MdspanRandomAccessIterator'
  502 | operator<=>(const queue<_Tp, _Container>& __x, const queue<_Tp, _Container>& __y) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/stack:340:35: note: candidate template ignored: could not match 'stack' against 'MdspanRandomAccessIterator'
  340 | inline _LIBCPP_HIDE_FROM_ABI bool operator>=(const stack<_Tp, _Container>& __x, const stack<_Tp, _Container>& __y) {
      |                                   ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/stack:353:1: note: candidate template ignored: could not match 'stack' against 'MdspanRandomAccessIterator'
  353 | operator<=>(const stack<_Tp, _Container>& __x, const stack<_Tp, _Container>& __y) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/variant:1465:1: note: candidate template ignored: could not match 'variant' against 'MdspanRandomAccessIterator'
 1465 | operator<=>(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/variant:1535:38: note: candidate template ignored: could not match 'variant' against 'MdspanRandomAccessIterator'
 1535 | _LIBCPP_HIDE_FROM_ABI constexpr bool operator>=(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs) {
      |                                      ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/map:1625:1: note: candidate template ignored: could not match 'map' against 'MdspanRandomAccessIterator'
 1625 | operator<=>(const map<_Key, _Tp, _Compare, _Allocator>& __x, const map<_Key, _Tp, _Compare, _Allocator>& __y) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/map:2145:1: note: candidate template ignored: could not match 'multimap' against 'MdspanRandomAccessIterator'
 2145 | operator<=>(const multimap<_Key, _Tp, _Compare, _Allocator>& __x,
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/set:998:1: note: candidate template ignored: could not match 'set' against 'MdspanRandomAccessIterator'
  998 | operator<=>(const set<_Key, _Allocator>& __x, const set<_Key, _Allocator>& __y) {
      | ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/set:1458:1: note: candidate template ignored: could not match 'multiset' against 'MdspanRandomAccessIterator'
 1458 | operator<=>(const multiset<_Key, _Allocator>& __x, const multiset<_Key, _Allocator>& __y) {
      | ^
1 warning and 9 errors generated.
make[2]: *** [tests/native/CMakeFiles/iterator.dir/iterator.cpp.o] Error 1
make[2]: Target `tests/native/CMakeFiles/iterator.dir/build' not remade because of errors.
make[1]: *** [tests/native/CMakeFiles/iterator.dir/all] Error 2
mhoemmen commented 3 months ago

We should probably delete that iterator.cpp file -- it's really old, and not something we really want to teach.