对于某些类,我们可以定义执行显式模板特化的宏作为 Boost 序列化库中的以下示例:
#define BOOST_IS_BITWISE_SERIALIZABLE(T) \
namespace boost { \
namespace serialization { \
template<> \
struct is_bitwise_serializable< T > : mpl::true_ {}; \
}} \
/**/
这适用于完全专业化,例如BOOST_IS_BITWISE_SERIALIZABLE(MyClass<int>)
但我想创建一个方便的宏,它适用于具有不同参数的部分专业化,如下所示:
template<class T, class Enable>
struct is_bitwise_serializable< MyClassA<T, Enable> > : mpl::true_ {};
template<class T>
struct is_bitwise_serializable< MyClassB<T> > : mpl::true_ {};
template<int N>
struct is_bitwise_serializable< MyClassC<N> > : mpl::true_ {};
.....
我试图通过 Boost PreProcessor 文档来解决这个问题,但无法进行很多。是否有针对此的 Boost PreProcessor 解决方案?