1 // Build don't link: 2 // Origin: Alex Samuel <samuel@codesourcery.com> 3 4 namespace NS 5 { 6 7 template <class T, int V> 8 struct Base 9 { 10 }; 11 12 template <class T> 13 struct Z 14 { 15 const static int value_ = false; 16 }; 17 18 struct Outer 19 { 20 template <class T> 21 struct A : 22 public Base <T, Z<T>::value_> 23 { 24 }; 25 }; 26 27 template <class T> f(T)28void f(T) 29 { 30 } 31 32 } 33 34 35 template <template <class T> class U> 36 struct B 37 { 38 }; 39 40 41 int main()42main () 43 { 44 B<NS::Outer::A> ba; 45 f (ba); // Koenig lookup 46 return 0; 47 } 48 49