Re: [eigen] Problem using Boost's zip_iterator on Eigen column vectors |
[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]
Hello list,
I noticed today a problem in Boost's zip_iterator traversing well
beyond the end of a pair of equal dimension Eigen column vectors.
I've prepared a minimal below:
#include <iostream>
#include <Eigen/Core>
#include <boost/iterator/zip_iterator.hpp>
using namespace std;
int main()
{
using ColumnVectorType = Eigen::Matrix<float, 32, 1>;
ColumnVectorType FirstVector = ColumnVectorType::Zero();
ColumnVectorType SecondVector = ColumnVectorType::Zero();
const auto ZipperStart = boost::make_zip_iterator(
boost::make_tuple(
std::cbegin(FirstVector),
std::cbegin(SecondVector)));
// End...
const auto ZipperEnd = boost::make_zip_iterator(
boost::make_tuple(
std::cend(FirstVector),
std::cend(SecondVector)));
int index = 0;
for(auto Iterator = ZipperStart; ZipperStart != ZipperEnd; ++Iterator)
{
std::cout << "Iteration: " << index << std::endl;
++index;
}
return 0;
}
Running the above via Godbolt results in iterating the body of the loop
thousands of times when I expected only 32.
https://godbolt.org/z/fKG77s1ds
I then modified the above code to get rid of the second column vector
and the zip_iterator to iterate via the normal STL interface over the
single column vector. It executes as expected only 32 times.
This is probably just a problem with my usage, but I just wanted to let
the list know in case this is a bug.
--
Kip Warner
OpenPGP signed/encrypted mail preferred
https://www.thevertigo.com
Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |