1// { dg-do link  }
2// GROUPS passed templates membertemplates
3extern "C" int printf(const char*, ...);
4
5template <class U>
6struct S {
7  template <class T>
8  void operator+(T);
9};
10
11template <class U>
12template <class T>
13void S<U>::operator+(T)
14{
15  printf("Hello, world.\n");
16}
17
18
19int main()
20{
21  S<int> s;
22  s + 3;
23  s + s;
24  s.operator+("Hi");
25
26  S<S<int> > s2;
27  s2 + 3;
28  s2 + s;
29  s2.operator+("Hi");
30}
31