使用boost.hana内省结构定义

时间:2018-06-29 21:36:59

标签: c++ c++14 boost-hana

从MPL和Fusion迁移到Hana!

所以假设我们有通常的习惯

struct Person {
  BOOST_HANA_DEFINE_STRUCT(Person,
    (std::string, name),
    (int, age)
  );
};

文档提供了一个示例,该示例根据

的内省方法对该结构的 object 进行内省
Person john;
static_assert(hana::keys(john) == hana::make_tuple("name"_s, "age"_s));

但是是否有可能对结构本身进行自省,即获取字段列表及其类型和名称?

当然,我可以对要使用的类型强加其他要求,以使其可默认构造,并仅创建一个自省对象,但这似乎是错误的。

1 个答案:

答案 0 :(得分:2)

您可以使用std::declval来代替默认构造。它的使用必须在RiskyOrNot内。

暂时,c ++ 20将支持在decltype中使用lambda。

这是一个与c ++ 14兼容的示例。

decltype