Boost.Serialization のカスタムで軽量な適応を作成するために、これまでにいくつかのことを試しました。次のスタブが与えられます。
template<typename Archive>
class BasicStream {
public:
template<typename Any>
Archive& operator&(Any& data) {
return Serialize(*this, data);
}
};
一般に、ほとんどすべてのデータ型はグローバルSerialize
関数の呼び出しによって正しく処理されますが、いくつかの例外があります。一部のデータ型については、指定された .xml に基づいて異なる方法で処理したいと考えていますArchive
。書いてみた
class OutputStream : public BasicStream<OutputStream> {
public:
template<>
OutputStream& operator&(MyExceptionalType& data) {
// ... do something super special ... //
return *this;
}
};
ただし、エラーが発生しますIntelliSense: declaration is incompatible with function template "OutputStream &BasicStream<Archive>::operator&(Any &data) [with Archive=OutputStream]"
。operator&
の一般的なバージョンを継承し、派生クラスに特化しようとするこの試みの何が問題なのですか?