1 // PR ipa/69241
2 // { dg-do compile { target c++11 } }
3 // { dg-options "-O2 -Wno-return-type" }
4 
5 template <typename> class A;
6 struct B {
7   using pointer = int *;
8 };
9 template <typename _CharT, typename = A<_CharT>> class basic_string {
10   long _M_string_length;
11   enum { _S_local_capacity = 15 } _M_local_buf[_S_local_capacity];
12   B::pointer _M_local_data;
13 
14 public:
15   ~basic_string();
16 };
17 template <typename _CharT, typename _Traits, typename _Alloc>
18 int operator<<(_Traits, basic_string<_CharT, _Alloc>);
19 class C {
20   basic_string<A<char>> _M_string;
21 };
22 class D {
23   C _M_stringbuf;
24 };
25 class F {
26   int stream;
27   D stream_;
28 };
29 class G {
30 public:
31   void operator&(int);
32 };
33 class H {
34 public:
35   H(unsigned);
36   H(H &&);
37   bool m_fn1();
38 };
39 class I {
40   void m_fn2(const int &&);
41   static H m_fn3(const int &);
42 };
43 template <typename Functor> void Bind(Functor);
44 class J {
45 public:
46   static basic_string<char> m_fn4();
47 };
48 int a;
m_fn2(const int &&)49 void I::m_fn2(const int &&) { Bind(m_fn3); }
m_fn3(const int &)50 H I::m_fn3(const int &) {
51   !false ? (void)0 : G() & F() << J::m_fn4();
52   H b(a);
53   if (b.m_fn1())
54     F();
55 }
56