
gast128 wrote:
An example is the counting iterator:
const std::vector<int> values1(boost::make_counting_iterator(1), boost::make_counting_iterator(10));
gives C4244. This is even harder to supress since the STL is included in the precompiled header.
This code should really not give you any warnings. (And doesn't on GCC, though I doubt that'll help you.) C4244, so that others don't have to look it up, is the "conversion with possible data loss" warning. This indicates that in VC++, make_counting_iterator returns a counting_iterator<long> or even <__int64>. Can somebody with that compiler post the output of this line? std::cout << typeid(boost::make_counting_iterator(1)).name() << std::endl; A simple workaround for this particular warning ought to be to directly instantiate counting_iterators with their template parameter set correctly. Sebastian Redl