boostorg / boostorg/compute

compile error when dereferencing a strided_iterator

Open
#851 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
1.7k
Forks
340
PR merge metrics
No merged PRs in 30d

Description

It is not possible to compile a program that dereferences a `strided_iterator`:
```
boost::compute::int_ data[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
auto it = boost::compute::make_strided_iterator(data, 3);
BOOST_CHECK_EQUAL(*it, 1);
```
That results in:
```
test_strided_iterator.cpp:22:
/compute/include/boost/compute/iterator/strided_iterator.hpp: In instantiation of ‘boost::compute::strided_iterator::reference boost::compute::strided_iterator::dereference() const [with Iterator = int*; boost::compute::strided_iterator::reference = int&]’:
/usr/include/boost/iterator/iterator_facade.hpp:550:31: required from ‘static typename Facade::reference boost::iterators::iterator_core_access::dereference(const Facade&) [with Facade = boost::compute::strided_iterator; typename Facade::reference = int&]’
/usr/include/boost/iterator/iterator_facade.hpp:656:53: required from ‘boost::iterators::detail::iterator_facade_base::reference boost::iterators::detail::iterator_facade_base::operator*() const [with Derived = boost::compute::strided_iterator; Value = int; CategoryOrTraversal = std::random_access_iterator_tag; Reference = int&; Difference = long int; boost::iterators::detail::iterator_facade_base::reference = int&]’
/compute/test/test_strided_iterator.cpp:120:3: required from here
/compute/include/boost/compute/iterator/strided_iterator.hpp:187:16: error: value-initialization of reference type ‘boost::compute::strided_iterator::reference’ {aka ‘int&’}
187 | return reference();
| ^~~~~~~~~~~
make[3]: *** [test/CMakeFiles/test_strided_iterator.dir/build.make:82: test/CMakeFiles/test_strided_iterator.dir/test_strided_iterator.cpp.o] Fehler 1
make[2]: *** [CMakeFiles/Makefile2:3532: test/CMakeFiles/test_strided_iterator.dir/all] Fehler 2
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.