* decl.c (make_typename_type): s/parameters/arguments/.
[official-gcc.git] / gcc / testsuite / g++.dg / cpp0x / override2.C
blobab4dec486c666a4d1ed04a6c110167bd556d9a8f
1 // { dg-do compile { target c++11 } }
2 struct B1 {};
4 struct B2 final {};
6 struct D1 : B1 {};
8 struct D2 : B2 {}; // { dg-error "cannot derive from 'final' base" }
10 template<class T> struct D3 : T {};
12 template<class T> struct D4 : T {}; // { dg-error "cannot derive from 'final' base" }
14 template <class T> struct B3 {};
16 template <class T> struct B4 final {};
18 template <class T> struct B5 final {};
20 struct undeclared<int> final { }; // { dg-error "not a class template" }
22 struct D5 : B3<D5> {};
24 struct D6 : B4<D6> {}; // { dg-error "cannot derive from 'final' base" }
26 struct B6 final final {}; // { dg-error "duplicate virt-specifier" }
28 struct B7 override {}; // { dg-error "cannot specify 'override' for a class" }
30 namespace N
32   struct C;
35 struct N::C final{};
37 int main()
39   D3<B1> d;
40   D4<B2> d2;
41   struct B2 final{}; // { dg-message "previous definition" }
42   B2 final; // { dg-error "has a previous declaration|previously declared here" }
43   B2 final2 = final;
44   struct B2 {}; // { dg-error "redefinition" }
45   struct B2 final; // { dg-error "redeclaration" }
46   struct B2 override; // { dg-message "previously declared here" }
47   struct B2 final {}; // { dg-error "redefinition" }
48   struct B2 override {}; // { dg-error "cannot specify 'override' for a class" }
49   B2 override{}; // { dg-error "redeclaration" }
50   struct foo final {}; // { dg-message "previous definition" }
51   struct foo final {}; // { dg-error "redefinition" }
52   foo final; // { dg-error "conflicting declaration" }