Я новичок в библиотеках boost :: fusion и boost :: mpl. Может ли кто-нибудь сказать мне основное различие между этими двумя библиотеками?
До сих пор я использовал только fusion :: vector и несколько других простых вещей. Теперь я хочу использовать fusion :: map или MPL :: map, но я не знаю, как выбрать правильный.
Мне нужно отобразить простой тип на сложный тип (тип alisa). В настоящее время у меня есть следующие фрагменты, и оба работают именно так, как мне нужно.
повышение :: фьюжн:
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;
повышение :: 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 и слиянием? Существуют ли сценарии, когда одна библиотека предпочтительнее другой?
Спасибо за ответ.