|
Boost : |
From: Calum Grant (calum_at_[hidden])
Date: 2005-10-03 15:22:08
> Macros are useful tools - you only have to look at
> Boost.PreProcessor to
> see how powerful it can be! However, macros/preprocessor sould be,
> wherever possible, restricted to implementation (like Boost.Function).
I think the solution is to provide both syntaxes. Macro-haters can
write
typedef relational::row< unique<int>, indexed<std::string> >
Person;
enum { person_id, person_name };
table<Person> people;
select(people, col<person_name>() == "Reece");
while people who don't mind macros can write
RM_DEFINE_ROW(Person,
unique<int>, id,
indexed<std::string>, name);
table<Person> people;
select(people, people.name == "Reece");
It seems pretty clear that there are varying tastes, so the only
solution is to provide both. The notation provided first was the
original approach that RML used, and was free from macros, so it would
not be too much trouble to put that code back in. I will do that in the
next release of RML (which will probably be a couple of weeks as I
collate feedback).
Thanks all for the feedback, keep it coming,
Calum
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk