52 lines · cpp
1// RUN: %clang_cc1 %s -verify2// PR113583 4namespace test1 {5 template<typename T>6 struct container {7 class iterator {};8 iterator begin() { return iterator(); }9 };10 11 template<typename T>12 struct Test {13 typedef container<T> Container;14 void test() {15 Container::iterator i = c.begin(); // expected-error{{missing 'typename'}}16 }17 Container c;18 };19}20 21namespace test2 {22 template <typename Key, typename Value>23 class hash_map {24 class const_iterator { void operator++(); };25 const_iterator begin() const;26 const_iterator end() const;27 };28 29 template <typename KeyType, typename ValueType>30 void MapTest(hash_map<KeyType, ValueType> map) {31 for (hash_map<KeyType, ValueType>::const_iterator it = map.begin(); // expected-error{{missing 'typename'}}32 it != map.end(); it++) {33 }34 }35}36 37namespace test3 {38 template<typename T>39 struct container {40 class iterator {};41 };42 43 template<typename T>44 struct Test {45 typedef container<T> Container;46 void test() {47 Container::iterator const i; // expected-error{{missing 'typename'}}48 }49 Container c;50 };51}52