Boost logo

Boost :

From: Larry Evans (cppljevans_at_[hidden])
Date: 2005-04-28 07:28:38


On 04/26/2005 05:21 PM, Joel wrote:
> Larry Evans wrote:
[snip]
>> Not if you use either something like mpl's map:
>
>
> [...]
>
>> >-------------------- cut here ---------------------
[snip]
>
> Gentlemen, these are all variations of the associative tuple.
> An implementation of fusion's set and map will be available
> as soon as I formalize the interface. I already have an
> implementation handy, ready to be deployed.
>
[snip]
> As to which is better: a (type) tag or an enumerator; a (type)
> tag is definitely better because 1) an enumerator fails to
> address common idioms like named parameters which uses type

OK. I hadn't thought of that.

I'd also been wondering why there couldn't be a boost::map_c similar to
boost::vector_c whose first argument would be the integral type. This
would avoid the need for the

   field_name

nested template in my previous post.

> tags. And, 2) a type tag can handle enumerators as well if you
> place them in some sort of enum_<enum> template akin to
> mpl::int_:
>
> template <my_enum e>
> struct my_enum_ {};
>
> IOTW, you can easily convert an enum to a type.

As was demonstrated with the

   template<enum_map_0::field_names FieldName>
   struct field_name{};

in the snipped part of my post which was quoted above ;)

BTW, changing:

[-------- cut here ---------
   template
   < class FieldTypes
   , class Indices
>
   struct
tuple_indexed
   : factor
     < FieldTypes
     , size<FieldTypes>::value
>
{

]-------- cut here ---------

to the following:

[-------- cut here ---------
   template
   < class FieldTypes
   , class Indices=unsigned
>
   struct
tuple_indexed
   : tuple
     < FieldTypes
>
{

]-------- cut here ---------

in the vault code mentioned in my previous posts would work just as
well and reuse boost::mpl::tuple or, I assume, fusion's tuple, and
achieve what OP desires, AFAICT. If OP doesn't want to be bothered
with the enum_map arg to tuple_mapped (see vault code), he could
just use tuple_indexed<FieldTypes> (using the default Indices=unsigned).

I haven't tried it yet.


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