Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion libcudacxx/include/cuda/__iterator/strided_iterator.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ class strided_iterator

// Those are technically not to spec, but pre-ranges iterator_traits do not work properly with iterators that do not
// define all 5 aliases, see https://en.cppreference.com/w/cpp/iterator/iterator_traits.html
using reference = value_type;
using reference = ::cuda::std::iter_reference_t<_Iter>;
using pointer = void;

//! @brief value-initializes both the base iterator and stride
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ __host__ __device__ void test()
static_assert(cuda::std::same_as<typename IterTraits::value_type, int>);
static_assert(cuda::std::is_signed_v<typename IterTraits::difference_type>);
static_assert(cuda::std::same_as<typename IterTraits::difference_type, cuda::std::iter_difference_t<int*>>);
static_assert(cuda::std::same_as<typename IterTraits::reference, cuda::std::iter_reference_t<int*>>);
static_assert(cuda::std::random_access_iterator<Iter>);
static_assert(cuda::std::__has_random_access_traversal<Iter>);
}
Expand All @@ -42,6 +43,7 @@ __host__ __device__ void test()
static_assert(cuda::std::same_as<typename IterTraits::value_type, int>);
static_assert(cuda::std::is_signed_v<typename IterTraits::difference_type>);
static_assert(cuda::std::same_as<typename IterTraits::difference_type, cuda::std::iter_difference_t<int*>>);
static_assert(cuda::std::same_as<typename IterTraits::reference, cuda::std::iter_reference_t<int*>>);
static_assert(cuda::std::random_access_iterator<Iter>);
static_assert(cuda::std::__has_random_access_traversal<Iter>);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ __host__ __device__ void test()
static_assert(cuda::std::same_as<Iter::value_type, int>);
static_assert(cuda::std::is_signed_v<Iter::difference_type>);
static_assert(cuda::std::same_as<Iter::difference_type, cuda::std::iter_difference_t<int*>>);
static_assert(cuda::std::same_as<Iter::reference, cuda::std::iter_reference_t<int*>>);
static_assert(cuda::std::random_access_iterator<Iter>);
static_assert(cuda::std::is_trivially_copyable_v<Iter>);
}
Expand All @@ -38,6 +39,7 @@ __host__ __device__ void test()
static_assert(cuda::std::same_as<Iter::value_type, int>);
static_assert(cuda::std::is_signed_v<Iter::difference_type>);
static_assert(cuda::std::same_as<Iter::difference_type, cuda::std::iter_difference_t<int*>>);
static_assert(cuda::std::same_as<Iter::reference, cuda::std::iter_reference_t<int*>>);
static_assert(cuda::std::random_access_iterator<Iter>);
static_assert(cuda::std::is_trivially_copyable_v<Iter>);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ __host__ __device__ constexpr void test(Stride stride)

++iter;
assert(*iter == 3);
*iter = 5;
assert(buffer[iter.stride()] == 5);
assert(cuda::std::addressof(*iter) == buffer + iter.stride());
static_assert(noexcept(*iter));
static_assert(cuda::std::is_same_v<decltype(*iter), cuda::std::iter_reference_t<int*>>);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ __host__ __device__ constexpr void test(Stride stride)
++iter;
assert(iter[2] == *(buffer + 3 * iter.stride()));
assert(cuda::std::addressof(iter[2]) == buffer + 3 * iter.stride());

iter[3] = 5;
assert(buffer[4 * iter.stride()] == 5);
static_assert(noexcept(iter[2]));
static_assert(cuda::std::is_same_v<decltype(iter[2]), cuda::std::iter_reference_t<int*>>);
}
Expand Down