我是一名新手,对于boost::fusion和boost::mpl库还不太熟悉。请问有人可以告诉我这两个库的主要区别吗?
到目前为止,我只使用了fusion::vector和其他几个简单的内容。现在我想使用fusion::map或者MPL::map,但我不知道该如何选择合适的一个。
我需要将简单类型映射到复杂类型(类型别名)。目前我有以下代码片段,它们都完全满足我的需求。
boost::fusion:
typedef boost::fusion::map<
boost::fusion::pair<AliasNames::test1,int>,
boost::fusion::pair<AliasNames::test2,double>,
boost::fusion::pair<AliasNames::test3,float>
> TmapAssociations1;
typedef boost::fusion::result_of::value_at_key<TmapAssociations,AliasNames::test1>::type t;
boost::MPL:
typedef boost::mpl::map<
boost::mpl::pair<AliasNames::test1,int>,
boost::mpl::pair<AliasNames::test2,double>,
boost::mpl::pair<AliasNames::test3,float>
> TmapAssociations2;
boost::mpl::at<TmapAssociations2,AliasNames::test1>::type t2;
MPL和Fusion之间有什么区别吗?是否存在一些场景,其中一个库优于另一个库?
谢谢回复。