Daniel Dunbar | 8fbe78f | 2009-12-15 20:14:24 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 -fsyntax-only -verify %s |
Reid Kleckner | 8d7aac8 | 2014-12-17 19:34:15 +0000 | [diff] [blame] | 2 | |
Eli Friedman | 9a0e23c | 2009-06-13 04:51:30 +0000 | [diff] [blame] | 3 | // PR4382 |
| 4 | template<typename T> struct X { static const T A = 1; }; |
| 5 | template<typename T, bool = X<T>::A> struct Y { typedef T A; }; |
| 6 | template<typename T> struct Z { typedef typename Y<T>::A A; }; |
| 7 | extern int x; |
| 8 | extern Z<int>::A x; |
Reid Kleckner | 8d7aac8 | 2014-12-17 19:34:15 +0000 | [diff] [blame] | 9 | |
| 10 | namespace pr21964 { |
| 11 | struct H; |
| 12 | template <class> struct T { |
| 13 | struct A; // expected-note {{member is declared here}} |
| 14 | static void B() { |
| 15 | A::template N<H>; // expected-error {{implicit instantiation of undefined member 'pr21964::T<pr21964::H>::A'}} |
| 16 | } |
| 17 | }; |
| 18 | template struct T<H>; // expected-note {{requested here}} |
| 19 | } |