Boost Hana cung cấp khả năng nội quan trên các lĩnh vực thành viên lớp một cách đơn giản và đẹp:Có thể quan tâm đến các phương pháp sử dụng Boost Hana không?
// define:
struct Person {
std::string name;
int age;
};
// below could be done inline, but I prefer not polluting the
// declaration of the struct
BOOST_HANA_ADAPT_STRUCT(not_my_namespace::Person, name, age);
// then:
Person john{"John", 30};
hana::for_each(john, [](auto pair) {
std::cout << hana::to<char const*>(hana::first(pair)) << ": "
<< hana::second(pair) << std::endl;
});
Tuy nhiên, các tài liệu chỉ đề cập đến thành viên lĩnh vực. Tôi cũng muốn nhìn vào các phương pháp. Tôi đã cố gắng mở rộng ví dụ một cách ngây thơ bằng một phương thức:
struct Foo {
std::string get_name() const { return "louis"; }
};
BOOST_HANA_ADAPT_STRUCT(::Foo, get_name);
Biên dịch này. Tuy nhiên, ngay sau khi tôi cố gắng sử dụng nó, sử dụng mã tương tự như ở trên (for_each
...), tôi nhận được nhiều lỗi biên dịch. Vì không có ví dụ nào thể hiện sự mâu thuẫn của các phương thức, tôi tự hỏi liệu nó có được hỗ trợ hay không.
Nó được hỗ trợ, nhưng tôi đồng ý rằng nó có thể được tài liệu tốt hơn. Bạn có thể xem phần _Minimal complete definition_ của khái niệm ['Struct'] (http://ldionne.com/hana/structboost_1_1hana_1_1Struct.html). Tôi không có thời gian để viết một câu trả lời đầy đủ ngay bây giờ, nhưng tôi sẽ cố gắng làm điều đó trong những ngày tiếp theo (và cũng cập nhật hướng dẫn). –