, :
template <typename T, int I>
struct A {
template <typename S, I>
void f (const A<S, I> &s);
template <typename S, int J>
friend struct A;
private:
void g () const {}
};
template <typename T, int I>
template <typename S>
void A<T>::f (const A<S> &s) {
s.g();
}
int main () {
A<bool, 5> abool;
A<char, 7> achar;
abool.f(achar);
}
. ? , ++ 0x ?
, (friend struct <S, J>), , S J - . , - S , struct A? S friend struct A<S,J>? ? , ?
, , : template <typename S, int J> friend struct A<S, J>, , ? , , template <typename S, int J>.
, , , .
, A :
template <typename T>
struct A<T, 5> {
};
, , , , . , , , , .