从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));
但是是否有可能对结构本身进行自省,即获取字段列表及其类型和名称?
当然,我可以对要使用的类型强加其他要求,以使其可默认构造,并仅创建一个自省对象,但这似乎是错误的。
答案 0 :(得分:2)
您可以使用std::declval
来代替默认构造。它的使用必须在RiskyOrNot
内。
暂时,c ++ 20将支持在decltype
中使用lambda。
这是一个与c ++ 14兼容的示例。
decltype