Đọc một số mã nguồn, tôi đã tìm thấy những đặc điểm tiếp theo định nghĩa:Định nghĩa kiểu đặc điểm. Đặc điểm blobs & Metafunctions
namespace dds {
template <typename Topic> struct topic_type_support { };
template <typename Topic> struct topic_data_writer { };
template <typename Topic> struct topic_data_reader { };
template <typename Topic> struct topic_data_seq { };
}
#define REGISTER_TOPIC_TRAITS(TOPIC) \
namespace dds { \
template<> struct topic_type_support<TOPIC> { \
typedef TOPIC##TypeSupport type; }; \
template<> struct topic_data_writer<TOPIC> { \
typedef TOPIC##DataWriter type; }; \
template<> struct topic_data_reader<TOPIC> { \
typedef TOPIC##DataReader type; }; \
template<> struct topic_data_seq<TOPIC> { \
typedef TOPIC##Seq type; }; \
}
Điều đó có vẻ lạ với tôi. Tôi đã có thể nhóm lại tất cả các đặc điểm trong một lớp học độc đáo như thế này:
namespace dds {
template <typename Topic> struct topic_traits { };
}
#define REGISTER_TOPIC_TRAITS(TOPIC) \
namespace dds { \
template<> struct topic_traits<TOPIC> { \
typedef TOPIC##TypeSupport type_support; \
typedef TOPIC##DataWriter data_writter; \
typedef TOPIC##DataReader data_reader; \
typedef TOPIC##Seq seq_type; \
}; \
}
bất kỳ của bạn có thể hiểu tại sao tiếp cận thứ hai có thể yếu hơn so với cái đầu tiên hoặc đáng kể khó khăn hơn để thêm những đặc điểm mới?
Để biết thêm về lập trình meta google Boost MPL – KitsuneYMG
@Samuel: Đặc điểm blob. Đó là tên tôi đang tìm kiếm! Cảm ơn. Tôi đã ra lệnh cho sách Abraham. –