// { dg-do assemble } // Origin: Alex Samuel <samuel@codesourcery.com> namespace NS { template <class T, int V> struct Base { }; template <class T> struct Z { const static int value_ = false; }; template <class T> struct A : public Base <T, Z<T>::value_> { }; template <class T> void f(T) { } } template <template <class T> class U> struct B { }; int main () { B<NS::A> ba; f (ba); // Koenig lookup return 0; }