|
Boost Users : |
From: Larry Evans (cppljevans_at_[hidden])
Date: 2006-05-06 13:37:23
On 05/01/2006 08:49 AM, Ronald Garcia wrote:
> The review of Joel de Guzman's Fusion library begins today, May 1,
In extension.htm, there's a section:
Designing a suitable iterator
which has code:
template<typename Struct, int Pos>
struct example_struct_iterator
: iterator_base<example_struct_iterator<Struct, Pos> >
{
BOOST_STATIC_ASSERT(Pos >=0 && Pos < 3);
typedef Struct struct_type;
typedef mpl::int_<Pos> index;
typedef example_struct_iterator_tag ftag;
typedef random_access_traversal_tag category;
example_struct_iterator(Struct& str)
: struct_(str) {}
Struct& struct_;
};
However, there's no declaration of example_struct_iterator_tag. I
assume it can just be declared (no need to define it) like
the example_sequence_tag occuring just below the section titled:
Enabling Tag Dispatching
Actually, I think that's another typo, IOW instead of
example_sequence_tag, it should be example_tag. But that
makes me wonder if you didn't meand that
example_struct_iterator_tag should also be example_tag.
Also, since the above code is all for a specific structure, i.e.
example_struct, why is there any need for including a Struct
template parameter. Why not just:
template<int Pos>
struct example_struct_iterator
: iterator_base<example_struct_iterator<example_struct, Pos> >
{
BOOST_STATIC_ASSERT(Pos >=0 && Pos < 3);
typedef example_struct struct_type;
...
};
?
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