Hi there again, a bit more information.
MSVC10 is complaining about that it cannot find the correct copy
algorithm implementation since for some reason the iterator categories
are messed up in its opinion. I doubt that. Here is why:
Copy takes an input and output interator type. My input type is:
bit_aligned_pixel_iterator< const pixel_t >.
The output is:
bit_aligned_pixel_iterator< pixel_t >.
Obviously the iterator category for both types is the same and when
asked for it results into:
boost::detail::iterator_category_with_traversalstd::input_iterator_tag,boost::random_access_traversal_tag.
Now when calling copy the compiler eventually has to decide what copy
implementation to use based on the iterator categories. For reasons I
don't understand right now it cannot choose between:
_OutIt std::_Copy_impl<_InIt,_OutIt>(_InIt,_InIt,_OutIt,std::input_iterator_tag,std::output_iterator_tag)
_OutIt std::_Copy_impl<_InIt,_OutIt>(_InIt,_InIt,_OutIt,std::random_access_iterator_tag,std::random_access_iterator_tag)
I would think the second one is the one to go with. I'm pretty sure
this behavior is new with MSVC10 and I cannot recall this problem with
older MSVCs. Unfortunately I don't have access to older versions right
now.
Anyone can help me out here?
Here some simple test code:
#include <vector>
#include <algorithm>
#include