1// { dg-do compile }
2
3struct A
4{
5  A ();
6};
7const unsigned long &min (const unsigned long &, const unsigned long &) {}
8
9template <typename _InputIterator1, typename _InputIterator2,
10          typename _OutputIterator, typename _BinaryOperation>
11void transform (_InputIterator1 p1, _InputIterator2, _OutputIterator,
12                _BinaryOperation p4)
13{
14  for (; p1;)
15    p4 (0, 0);
16}
17
18class multi_array
19{
20public:
21  multi_array (int &, int &);
22  int &resize_ranges;
23  int resize___trans_tmp_1;
24  void m_fn1 ()
25  {
26    multi_array a (resize_ranges, this->m_fn2 ());
27    const unsigned long &(*b)(const unsigned long &, const unsigned long &)
28      = min;
29    transform (&resize___trans_tmp_1, 0, 0, b);
30    A c;
31  }
32  ~multi_array ()
33  {
34    for (int i; &base_;)
35      ;
36  }
37  int base_;
38  int &m_fn2 ();
39};
40
41class B
42{
43  void m_fn3 (const int &, const int &);
44  multi_array _bookingSnapshotBlock;
45};
46void B::m_fn3 (const int &, const int &) { _bookingSnapshotBlock.m_fn1 (); }
47