openmp: Fix signed/unsigned warning
[official-gcc.git] / gcc / testsuite / g++.dg / cpp0x / override1.C
blob543ac840cf221af560eb6161d24f62c93ea15a7a
1 // { dg-do compile { target c++11 } }
2 struct B
4   virtual void f() final {}
5   virtual void g() {}
6   virtual void x() const {}
7   virtual void y() final;
8 };
10 void B::y() {} // { dg-message "overridden" }
12 struct B2
14   virtual void h() {}
17 struct D : B
19   virtual void g() override final {} // { dg-message "overridden" }
20   virtual void y() override final {} // { dg-error "virtual" }
23 template <class T> struct D2 : T
25   void h() override {} // { dg-error "marked 'override', but does not override" }
28 template <class T> struct D3 : T
30   void h() override {}
33 struct D4 : D
35   void g() {} // { dg-error "virtual function" }
38 struct B3
40   virtual void f() final final {} // { dg-error "duplicate virt-specifier" }
43 struct B4
45   void f() final {} // { dg-error "marked 'final', but is not virtual" }
48 struct D5 : B
50   void ff() override {} // { dg-error "marked 'override', but does not override" }
51   virtual void fff() override {} // { dg-error "marked 'override', but does not override" }
52   virtual void x() override {} // { dg-error "marked 'override', but does not override" }
53   void g() override;
56 void D5::g() override {} // { dg-error "not allowed outside a class definition" }
57 void g() override {} // { dg-error "not allowed outside a class definition" }
59 struct B5
61   friend void f() final; // { dg-error "may not have virt-specifiers" }
62   friend void g() override; // { dg-error "may not have virt-specifiers" }
63   template <class T> void h() final; // { dg-error "may not have virt-specifiers" }
64   template <class T> void i() override; // { dg-error "may not have virt-specifiers" }
67 int main()
69   D2<B> d;
70   D2<B2> d2;
71   D3<B2> d3;