
AMDG On 06/17/2012 08:18 AM, Julien Nitard wrote:
Here are a few questions and suggestions:
- I can create an any of a "smaller" concept from an any of a "bigger" concept, but I have to do it explicitly, why ? Couldn't the conversion be automatic when dealing with references ?
The constructors like template<class Concept1, class Tag2> any(const any<Concept2, Tag2>&); look implicit to me.
- Why the _self keyword for references ? Wouldn't any<mpl::vector<...>&> work and be more intuitive ?
It might be more convenient, but it isn't logically consistent. any<mpl::vector<...> > is really any<mpl::vector<...>, _self>, because of the default argument.
- Even better, I'd rather have the ref any type has a typedef for the value any type. typedef any<mpl::vector<...>> MyAnyT; MyAnyT value(x); MyAnyT::RefT ref(y); (and reciprocally MyAnyRefT::ValueT)
By design, the only public members of any are constructors, destructors, and assignment operators. Any other name could potentially conflict with a user-defined member.
- _self and the placeholders have their underscore at the beginning while typeid_ has its own at the end. I guess this may be uniformized.
This is following normal boost conventions. Only placeholders get a leading underscore. In Christ, Steven Watanabe