1// { dg-do compile { target c++11 } } 2 3struct Iter 4{ 5 int& operator* (); 6 void operator++ (); 7}; 8 9bool operator!= (Iter &, Iter &) { } 10 11struct Container 12{ 13 Iter begin () const; 14 Iter end () const; 15}; 16 17struct J 18{ 19 virtual J *mutable_child (); 20}; 21 22struct M 23{ 24 M (const Container &); 25 J ns_; 26}; 27namespace 28{ 29 J MakeNamespace (const Container &src) 30 { 31 J a; 32 J *b = 0; 33 for (const int &c: src) 34 b = b ? b->mutable_child () : &a; 35 return a; 36 } 37} 38M::M (const Container &ns):ns_ (MakeNamespace (ns)) 39{ 40} 41