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