https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61554
--- Comment #2 from Markus Trippelsdorf <trippels at gcc dot gnu.org> --- markus@x4 tmp % cat bug.ii struct A { A (); }; const unsigned long &min (const unsigned long &, const unsigned long &) {} template <typename _InputIterator1, typename _InputIterator2, typename _OutputIterator, typename _BinaryOperation> void transform (_InputIterator1 p1, _InputIterator2, _OutputIterator, _BinaryOperation p4) { for (; p1;) p4 (0, 0); } class multi_array { public: multi_array (int &, int &); int &resize_ranges; int resize___trans_tmp_1; void m_fn1 () { multi_array a (resize_ranges, this->m_fn2 ()); const unsigned long &(*b)(const unsigned long &, const unsigned long &) = min; transform (&resize___trans_tmp_1, 0, 0, b); A c; } ~multi_array () { for (int i; &base_;) ; } int base_; int &m_fn2 (); }; class B { void m_fn3 (const int &, const int &); multi_array _bookingSnapshotBlock; }; void B::m_fn3 (const int &, const int &) { _bookingSnapshotBlock.m_fn1 (); }