Boost logo

Boost :

From: Eric Niebler (eric_at_[hidden])
Date: 2007-06-06 19:04:22


In proto, I have a specialization of fusion::extension::distance_impl<>
that looks like this:

   template<>
   struct distance_impl<proto::proto_ref_iterator_tag>
   {
     template<typename IteratorFrom, typename IteratorTo>
     struct apply
     {
       typedef mpl::long_<
         IteratorTo::index::value - IteratorFrom::index::value
> type;
     };
   };

This worked fine until fairly recently. But now there is code in
algorithm/iteration/detail/for_each.hpp like this:

   for_each_unrolled<
     result_of::distance<begin, end>::value
>::call(fusion::begin(seq), f);

The problem is with distance<begin, end>::value. My distance_impl<>
doesn't provide a nested value. It provides a nested type. If this were
distance<begin, end>::type::value, it works. It also works if I change
my distance_impl<> specialization, but I don't think I should have to. Bug?

-- 
Eric Niebler
Boost Consulting
www.boost-consulting.com

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk