Boost logo

Boost Users :

Subject: Re: [Boost-users] [counting_range] why?
From: Jeffrey Lee Hellrung, Jr. (jeffrey.hellrung_at_[hidden])
Date: 2012-11-28 12:56:22


On Wed, Nov 28, 2012 at 9:41 AM, Robert Jones <robertgbjones_at_[hidden]>wrote:

> Here's the compiler output....
>
> || ~/local/gcc-4.6.2/bin/g++ -std=c++0x -I ~/local/boost_1_48_0/include -g
> -W -fno-strict-aliasing -fno-inline -Wno-uninitialized -Wcast-align
> -Wwrite-strings -Wnon-virtual-dtor -Wextra -c -o range_for.o range_for.cpp
> In file included from
> /home/rjones/local/boost_1_48_0/include/boost/iterator/iterator_categories.hpp|15|
> 0,
> || from
> /home/rjones/local/boost_1_48_0/include/boost/iterator/detail/facade_iterator_category.hpp:7,
> || from
> /home/rjones/local/boost_1_48_0/include/boost/iterator/iterator_facade.hpp:14,
> || from
> /home/rjones/local/boost_1_48_0/include/boost/range/iterator_range_core.hpp:23,
> || from
> /home/rjones/local/boost_1_48_0/include/boost/range/counting_range.hpp:18,
> || from range_for.cpp:1:
> || /home/rjones/local/boost_1_48_0/include/boost/mpl/eval_if.hpp: In
> instantiation of ‘boost::mpl::eval_if_c<false,
> boost::range_const_iterator<int>, boost::range_mutable_iterator<int> >’:
> /home/rjones/local/boost_1_48_0/include/boost/range/iterator.hpp|63 col
> 63| instantiated from ‘boost::range_iterator<int>’
> /home/rjones/local/boost_1_48_0/include/boost/range/value_type.hpp|30 col
> 12| instantiated from ‘boost::range_value<int>’
> range_for.cpp|9 col 47| instantiated from here
> /home/rjones/local/boost_1_48_0/include/boost/mpl/eval_if.hpp|60 col 31|
> error: no type named ‘type’ in ‘boost::mpl::eval_if_c<false,
> boost::range_const_iterator<int>, boost::range_mutable_iterator<int> >::f_
> {aka struct boost::range_mutable_iterator<int>}’
> || /home/rjones/local/boost_1_48_0/include/boost/mpl/eval_if.hpp: In
> instantiation of ‘boost::mpl::eval_if_c<true,
> boost::range_const_iterator<int>, boost::range_mutable_iterator<const int>
> >’:
> /home/rjones/local/boost_1_48_0/include/boost/range/iterator.hpp|63 col
> 63| instantiated from ‘boost::range_iterator<const int>’
> /home/rjones/local/boost_1_48_0/include/boost/range/value_type.hpp|30 col
> 12| instantiated from ‘boost::range_value<const int>’
> range_for.cpp|9 col 47| instantiated from here
> /home/rjones/local/boost_1_48_0/include/boost/mpl/eval_if.hpp|60 col 31|
> error: no type named ‘type’ in ‘boost::mpl::eval_if_c<true,
> boost::range_const_iterator<int>, boost::range_mutable_iterator<const int>
> >::f_ {aka struct boost::range_const_iterator<int>}’
> || gmake: *** [range_for.o] Error 1
>

Looks like gcc is instantiating the unary overloads of counting_range (with
template parameter int) even though you're supplying 2 arguments...I'm not
sure if that is standard behavior or not; MSVC9 seems to do okay with it.

Is this is a real hindrance or merely curiosity?

- Jeff



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net