读一些源代码,我发现下一个特征定义:类型特征定义。性状斑点和元函数
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; }; \
}
这看起来怪我。我会分组所有性状独特的一类这样的:
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; \
}; \
}
任何你能弄清楚为什么第二种方法可能会比第一个或显著很难增加新的特征更加脆弱?
欲了解更多元编程谷歌助推MPL – KitsuneYMG 2009-12-09 04:31:51
@Samuel:特质blob。那是我正在寻找的名字!谢谢。我已经订购了亚伯拉罕书。 – 2009-12-12 11:03:21