[fusion][containers]reason for not reusing mpl::vector to specify element types

Both fusion list and vector specify argument types with: template < BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( FUSION_MAX_LIST_SIZE, typename T, void_) > struct container_whatever; where container_whatever may be either vector or list. What's the reason for not using mpl::vector instead of using yet another BOOST_PP_ENUM* call and requiring another *_MAX_*_SIZE macro?

Larry Evans wrote:
Both fusion list and vector specify argument types with:
template < BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( FUSION_MAX_LIST_SIZE, typename T, void_) > struct container_whatever;
where container_whatever may be either vector or list.
What's the reason for not using mpl::vector instead of using yet another BOOST_PP_ENUM* call and requiring another *_MAX_*_SIZE macro?
I can list two: 1) Preference. It has always been my preferred interface because it involves less typing for the user and the result looks better. Consider this: vector<int, short, char> versus this: vector<mpl::vector<int, short, char> > The second is redundant and involves unnecessary interface clutter. 2) Familiarity and existing practice: boost::tuple<int, short, char> boost::variant<int, short, char> boost::mpl::vector<int, short, char> I'd find it very odd if Fusion deviates from this. I consider Fusion a continuation of MPL and I try my best to follow its interface. Regards, -- Joel de Guzman http://www.boost-consulting.com http://spirit.sf.net
participants (2)
-
Joel de Guzman
-
Larry Evans