Boost logo

Boost :

From: Larry Evans (cppljevans_at_[hidden])
Date: 2006-05-04 06:31:00


On 05/03/2006 01:54 PM, dan marsden wrote:
>>In boost/fusion/tuple/tuple.hpp there's this:
[snip]
>>I don't see any use of the at_meta typedef. What's the
>>purpose of this typedef?
>
>
> This appears to be the result of a bit of cut and paste from the at and at_c implementations, which
> also have the redundant typedef. The get implementations should be calling at_c directly, rather than
> implementing more tag_dispatching to the at_impl type themselves. I've tidied things up, removing the
> redundant typedefs in both get and at, and modifying get to call at_c directly.

Could you post the location of the revised code?

>
> Thanks for pointing this one out.
Sure.

There may be a similar cut and paste problem in
/sequence/intrinsic/begin.hpp which has:

     template <typename Sequence>
     inline typename result_of::begin<Sequence>::type
     begin(Sequence& seq)
     {
         typedef result_of::begin<Sequence> begin_meta;
         return extension::begin_impl
            <typename traits::tag_of<Sequence>::type>::
             template apply<Sequence>::call(seq);
     }

Also, the docs in notes.html under "Tag Dispatching" at the 2nd
item 3 has:

    3. result_of::begin is the template which is specialized to provide
       an implementation for each tag type

yet, in the above begin.hpp, it's not specialized, and a grep of all the
.hpp file turned up no likely candidates; however, a grep for
'struct begin_impl' did show several specializations. Is
the aforementioned correct?


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