BOOST.Hana中BOOST\u FUSION\u ADAPT\u ASSOC的等价物是什么?
在过去的好日子里,我们常常将BOOST.Hana中BOOST\u FUSION\u ADAPT\u ASSOC的等价物是什么?,boost,c++14,boost-fusion,boost-hana,adaptor,Boost,C++14,Boost Fusion,Boost Hana,Adaptor,在过去的好日子里,我们常常将struct改编成Boost.Fusion容器或具有 #include <boost/fusion/adapted/struct/adapt_struct.hpp> #include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp> struct Person{ std::string name; int age; }; BOOST_FUSION_ADAPT_STRUC
struct
改编成Boost.Fusion容器或具有
#include <boost/fusion/adapted/struct/adapt_struct.hpp>
#include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
struct Person{
std::string name;
int age;
};
BOOST_FUSION_ADAPT_STRUCT(
Person,
(std::string, name)
(int, age)
);
struct tag_name;
struct tag_age;
BOOST_FUSION_ADAPT_ASSOC_STRUCT(
Person,
(std::string, name, tag_name)
(int, age, tag_age));
int main(){}
#包括
#包括
结构人{
std::字符串名;
智力年龄;
};
增强融合适应结构(
人,
(std::字符串,名称)
(国际,年龄)
);
结构标签名称;
结构标签;
增强\融合\自适应\关联\结构(
人,
(标准::字符串、名称、标记和名称)
(int,age,tag_age));
int main(){}
现在有了Boost.Hana,我们也可以适应了
#include <boost/hana/adapt_struct.hpp>
BOOST_HANA_ADAPT_STRUCT(Person,
name,
age
);
#包括
提升结构(人,
名称
年龄
);
问题是:BOOST.HANA中是否有一种BOOST\u HANA\u ADAPT\u ASSOC\u STRUCT
(相当于BOOST\u FUSION\u ADAPT\u ASSOC\u STRUCT
)?还是现在的做法有所不同?
额外问题:是否有
BOOST\u HANA\u ADAPT\u TPL
?根据BOOST.Fusion的文档,BOOST\u Fusion\u ADAPT\u ASSOC\u STRUCT
宏生成锅炉板进行建模
随机存取序列和关联序列
在Boost.Hana中,这些额外的宏是不需要的,因为在没有任何锅炉板的情况下,您可以免费获得额外的功能
对于“关联序列”,Boost.Hana具有提供该功能的概念
虽然Boost.Hana没有用于“随机访问序列”的迭代器,但它确实具有Boost.Hana概念中的函数和。
不幸的是,Hana没有实现这些,尽管我相信它可以。也许可以加上这一点
至于BOOST\u HANA\u ADAPT\u TPL
,BOOST.HANA没有用于简化模板结构的宏,但用户仍然可以实现在没有任何宏的情况下生成模板
您可以使用编译时字符串按名称搜索boost::hana::Struct
s成员:
#define BOOST_HANA_CONFIG_ENABLE_STRING_UDL
#include <boost/hana.hpp>
#include <string>
namespace hana = boost::hana;
using namespace hana::literals;
struct Person {
std::string name;
int age;
};
BOOST_HANA_ADAPT_STRUCT(
Person,
name,
age
);
int main()
{
Person person{"Joe", 42};
// hana::Searchable search by key
hana::at_key(person, "name"_s);
hana::at_key(person, "age"_s);
}
\define BOOST\u HANA\u CONFIG\u ENABLE\u STRING\u UDL
#包括
#包括
名称空间hana=boost::hana;
使用名称空间hana::文本;
结构人{
std::字符串名;
智力年龄;
};
提升结构(
人,
名称
年龄
);
int main()
{
人{“乔”,42};
//hana::可按键搜索
hana::at_key(人名);
hana::at_key(人称“年龄”);
}