Helmut Jarausch wrote:
> // something like the following declaration is necessary,
> // but how to pre-declare the local class Add of class Term
>
> template <typename Scalar>
> typename Term<Scalar>::Add& operator+(const Term<Scalar>& A, const
> Term<Scalar>& B);
>
> template <typename Scalar>
> class Term {
> class Add;
> public:
> Term() {}
> virtual Scalar operator()(Scalar Arg) const { return Arg; }
>
> friend Add<Scalar>& operator+(const Term<Scalar>& A, const Term<Scalar>&
> B);
> };
>
> Is there a solution for my problem?
template<typename Scalar> class Term;
template <typename Scalar>
typename Term<Scalar>::template Add<Scalar>& operator+(const Term<Scalar>& A,
const Term<Scalar>& B);
template <typename Scalar>
class Term {
template <typename T>
class Add { /*...*/};
public:
Term() {}
virtual Scalar operator()(Scalar Arg) const { return Arg; }
friend Add<Scalar>& operator+<>(const Term& A, const Term& B);
};