#include <iostream>
using namespace std;
template <class T> struct A;
class B
{
template <class T> friend class A;
int x;
public:
B(int x) : x(x) {}
};
template <class T> struct A
{
void func(B b) { cout << b.x << endl; }
};
int main(void)
{
A<void> a;
a.func(B(5));
return 0;
}