#include <iostream>

template<class T>
class A
{
public:
  template<class> friend class B;
  
  explicit A(T x) : priv_(x) {}

private:
  T priv_;
};

template<class T>
class B
{
public:
  B() : a_(1) { std::cout << a_.priv_ << '\n'; }
  
private:
  A<T> a_;
};

int main()
{
  B<int> b;
  return 0;
}