// RUN: %clang_cc1 %s -verify // PR11358 namespace test1 { template struct container { class iterator {}; iterator begin() { return iterator(); } }; template struct Test { typedef container Container; void test() { Container::iterator i = c.begin(); // expected-error{{missing 'typename'}} } Container c; }; } namespace test2 { template class hash_map { class const_iterator { void operator++(); }; const_iterator begin() const; const_iterator end() const; }; template void MapTest(hash_map map) { for (hash_map::const_iterator it = map.begin(); // expected-error{{missing 'typename'}} it != map.end(); it++) { } } } namespace test3 { template struct container { class iterator {}; }; template struct Test { typedef container Container; void test() { Container::iterator const i; // expected-error{{missing 'typename'}} } Container c; }; }