title: Why is the code "foo::foo::foo::foob" compiling?
body: <p>A co-worker accidentally wrote code like this: </p>
  
  <pre><code>struct foo {
    foo() : baz(foobar) {}
    enum bar {foobar, fbar, foob};
    bar baz;
  };
  
  void f() {
    for( auto x : { foo::foobar,
                    foo::fbar,
                    foo::
                    foo::
                    foo::foob } );
      // ...
  }
  </code></pre>
  
  <p>GCC 5.1.0 compiles this. </p>
  
  <p>What's the rule that makes this compile? </p>