一部のクラスでは、Boost Serialization ライブラリの次の例のように、明示的なテンプレートの特殊化を行うマクロを定義できます。
#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 ソリューションはありますか?