view gcc/testsuite/g++.dg/template/friend63.C @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
line wrap: on
line source

// PR c++/71738

template < class > struct S
{
  template < class > struct A
  { 
    template < class > struct B
    {
      template <class Z>
      void operator=(Z) { S::i = 0; }
    };
  };

  // Note that this friend declaration is useless, since nested classes are
  // already friends of their enclosing class.
  template < class X >
  template < class Y >
  template < class Z >
  friend void A < X >::B < Y >::operator= (Z);

private:
  static int i;
};

int main()
{
  S<int>::A<int>::B<int> b;
  b = 0;
}