我正在向前声明模板外部和内部类,如下所示
template<class T>
class outer;
class inner;
在上述声明之后,我将boost::serialization
声明定义为
namespace boost
{
namespace serialization
{
template<class Archive>
void serialize(Archive &ar, outer &var, ...) { }
}
}
Outer是一个模板类,因此需要指定模板参数。如果我尝试按照以下方式这样做
...
void serialize(... outer<T> &var ... ) { }
...
这是一个错误,因为只允许一个模板声明。定义这种前瞻性声明的正确方法是什么?
答案 0 :(得分:2)
尝试使用两个模板参数:
namespace boost
{
namespace serialization
{
template<class Archive, class T>
void serialize(Archive &ar, outer<T>& var, ...) { }
}
}
答案 1 :(得分:1)
我可能误解了,但你不能这样做:
template <class Archive, typename T>
void serialize( Archive archive, out<T> &var, ... );