1// RUN: %clang_cc1 -std=c++98 -fsyntax-only -verify %s
2
3inline namespace N { // expected-warning{{inline namespaces are a C++11 feature}}
4struct X {
5  template<typename ...Args> // expected-warning{{variadic templates are a C++11 extension}}
6  void f(Args &&...) &; // expected-warning{{rvalue references are a C++11 extension}} \
7  // expected-warning{{reference qualifiers on functions are a C++11 extension}}
8};
9}
10
11struct B {
12  virtual void f();
13  virtual void g();
14};
15struct D final : B { // expected-warning {{'final' keyword is a C++11 extension}}
16  virtual void f() override; // expected-warning {{'override' keyword is a C++11 extension}}
17  virtual void g() final; // expected-warning {{'final' keyword is a C++11 extension}}
18};
19
20void NewBracedInitList() {
21  // A warning on this would be sufficient once we can handle it correctly.
22  new int {}; // expected-error {{}}
23}
24
25struct Auto {
26  static int n;
27};
28auto Auto::n = 0; // expected-warning {{'auto' type specifier is a C++11 extension}}
29auto Auto::m = 0; // expected-error {{no member named 'm' in 'Auto'}}
30                  // expected-warning@-1 {{'auto' type specifier is a C++11 extension}}
31