Incompatible with counting iterator?

When I was adding tests to a bignum class, I ran into a problem with: //======================================================================== std::size_t const biggest = 27u, length = biggest + 1u; boost::counting_iterator<bignum> const cb( 0u ), ce( length ); std::vector<bignum> inputs; inputs.reserve( length ); std::copy( cb, ce, std::back_inserter(inputs) ); //======================================================================== There is a conversion from uintmax_t, but not TO any numeric built-in type. It also has a numeric_limits specialization. This is giving me an error, saying that it wants to convert my type to int, which isn't possible. It seems that my implementation of std::copy exploits random-access iterators, which a counting-iterator usually is, and takes a difference, which uses a difference_type of int, which chokes due to my type not having a suitable conversion. [Looking at the docs....] I guess that I need to change the CategoryOrTraversal and/or Difference parameters to counting_iterator, right? For now, I just have a manual loop: //======================================================================== for ( boost::counting_iterator<bignum> i = cb ; ce != i ; ++i ) { inputs.push_back( *i ); } //======================================================================== -- Daryle Walker Mac, Internet, and Video Game Junkie darylew AT hotmail DOT com
participants (2)
-
Daryle Walker
-
David Abrahams