次のように、テンプレートの外部クラスと内部クラスを前方宣言しています
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 ... ) { }
...
テンプレート宣言は 1 つしか許可されていないため、これはエラーです。そのような前方宣言を定義する適切な方法は何ですか?