gpt4 book ai didi

boost - boost::MPL 和 boost::fusion 之间的区别

转载 作者:行者123 更新时间:2023-12-03 00:53:46 28 4
gpt4 key购买 nike

我是 boost::fusion 和 boost::mpl 库的新手。谁能告诉我这两个库之间的主要区别?

到目前为止,我只使用 fusion::vector 和其他一些简单的东西。现在我想使用 fusion::map 或 MPL::map 但我不知道如何选择合适的。

我需要将简单类型映射到复杂类型(alisa 类型)。目前我有以下代码片段,并且两者都完全符合我的需要。

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 有什么区别吗?是否存在某个库优于另一个库的情况?

感谢回复。

最佳答案

来自introduction Fusion(两者中较新的一个):

STL containers work on values. MPL containers work on types. Fusion containers work on both types and values.

Choose MPL over fusion when doing pure type calculations. Once the static type calculation is finished, you can instantiate a fusion sequence (see Conversion) for the runtime part.

在您的示例中,两种方法都有效。如果您有更复杂的需求,也许 Fusion 会为您做一些额外的事情(在运行时)。但就目前情况而言,我会坚持使用 MPL。

关于boost - boost::MPL 和 boost::fusion 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6480373/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com