1*f4a2713aSLionel Sambuc // RUN: %clang_cc1 -fsyntax-only -verify %s 2*f4a2713aSLionel Sambuc namespace N { 3*f4a2713aSLionel Sambuc template<typename T> class A { }; 4*f4a2713aSLionel Sambuc 5*f4a2713aSLionel Sambuc template<> class A<int> { }; 6*f4a2713aSLionel Sambuc 7*f4a2713aSLionel Sambuc template<> class A<float>; // expected-note{{forward declaration of 'N::A<float>'}} 8*f4a2713aSLionel Sambuc 9*f4a2713aSLionel Sambuc class B : public A<int> { }; 10*f4a2713aSLionel Sambuc } 11*f4a2713aSLionel Sambuc 12*f4a2713aSLionel Sambuc class C1 : public N::A<int> { }; 13*f4a2713aSLionel Sambuc 14*f4a2713aSLionel Sambuc class C2 : public N::A<float> { }; // expected-error{{base class has incomplete type}} 15*f4a2713aSLionel Sambuc 16*f4a2713aSLionel Sambuc struct D1 { 17*f4a2713aSLionel Sambuc operator N::A<int>(); 18*f4a2713aSLionel Sambuc }; 19*f4a2713aSLionel Sambuc 20*f4a2713aSLionel Sambuc namespace N { 21*f4a2713aSLionel Sambuc struct D2 { 22*f4a2713aSLionel Sambuc operator A<int>(); 23*f4a2713aSLionel Sambuc }; 24*f4a2713aSLionel Sambuc } 25